Visitados recientemente
Visitados recientemente

API de Orion - Crear

[VERIFICADO] Last updated by Joe Schaefer on vie., 12 jun. 2026    source
 

Sistemas SunStar

 

Sistema de creación

En este documento se tratan las API Crear sistema.

Básicamente, el sistema de creación se rige por dos módulos Perl proporcionados por el usuario: lib/path.pm y lib/view.pm.

El trabajo del primero es hacer tres cosas:

  1. carga lib/facts.yml y lib/acl.yml,
  2. construcción @path::patternsy
  3. oportunista caminar content/ árbol para sembrar %path::dependencies y @path::acls de los metadatos de cabecera del archivo markdown/yaml.

El trabajo de este último es proporcionar invocable viewbasado en $methods para las entradas coincidentes en @path::patterns (como un nombre de método de cadena en la segunda ranura de cada entrada arrayref), invocado por el creación de scripts:

    for my $p (@$patterns) {
        my ($re, $method, $args) = @$p;
        next unless $path =~ $re;
        if ($args->{headers}) {
          my Data::Dumper $d;
          $d = $d->new([$args->{headers}], ['$args->{headers}']);
          $d->Deepcopy(1);
          $d->Purity(1);
          eval $d->Dump;
        }
        my $s = $method_cache{$method} //= view->can($method) or die "Can't locate method: $method\n";
        my $start_call = [gettimeofday];
    no warnings 'once';
    $view::path = $path;
        my ($content, $ext, undef, @new_sources) = $s->(nonce => $nonce, website => $ENV{WEBSITE}, repos => $ENV{REPOS}, path => $path, lang => $lang, %$args);
        my $elapsed = tv_interval($start_call);
        if ($$args{compress}) {
          $lang .= ".gz";
          if (defined $content) {
            utf8::encode($content) if utf8::is_utf8 $content;
            gzip \($content, my $compressed);
            $content = $compressed;
          }
        }
        if (defined $content) {
          my $dest = "$target_base/$target_file.$ext$lang";
          my $encoding = $$args{encoding} // ($$args{compress} ? "raw" : "utf8");
          my $mtime;
          #$mtime = $_->mtime for map stat $_, "content/$path";
          open my $fh, ">:$encoding", $dest
            or die "Can't open $dest: $!\n";
          print $fh $content;
          close $fh;
          #utime $mtime, $mtime, $dest if $mtime;
        }
        syswrite_all "Built to $target_base/$target_file.$ext$lang in ${elapsed}s.\n";
        return @new_sources;
    }

  COPY:
    my ($dest, $copied) = copy_if_newer $file, "$target_base/$file";
    syswrite_all "Copied to $dest.\n" if $copied;

 

Muchas vistas están destinadas a ser apiladas como “filtros” para preprocesar (o posprocesar) aspectos del archivo en $path que son novedosas, como el código externo snippets o asymptote-bloques de rebaja vallados. Se puede ver un ejemplo de ello aquí.

 


 

SunStarSys::View — clase base para lib/view.pm

 

single_narrative(%args)

La vista más popular (y sofisticada)

Esta vista incorpora el procesamiento automatizado de archivos ubicados dentro de la $pathdirectorio de anexos. Es decir, si $path = "/foo.md.en", a continuación, los archivos almacenados en el /foo.page/ directorio asociado con el “.en” extensión lingüística se incorporará en la plantilla de argumentos direccionables para que $path independientemente del preprocess configuración del argumento — que, si es cierto, también haría que ese material fuera accesible por el propio contenido de la página.

Mandatory Arguments:

  • template
  • path
  • lang

Optional Argmuents:

  • deps — sustituye a normal fetch_deps proceso

  • quick_deps — configuración de optimización interna de proceso de deps; mejor dejar sin configurar

  • preprocess — permite el procesamiento de plantillas en $path contenido en sí,

  • archive_root — archivos en “archivado” estado son “copiado” y rastreado por subcarpetas de año/mes a esta ubicación de contenido a través de ssi,

  • category_root — elementos en la “categorías” cabecera son “copiado” en carpetas de categorías con nombre adecuado en esta ubicación con raíz de contenido mediante ssi.

news_page(%args)

Para páginas de agregación (varias descripciones)

sitemap(%args)

Para crear las páginas index.html y sitemap.html

Índice de dependencias ordenado y específico de la configuración regional.

Mandatory Arguments:

  • path
  • lang

Optional Arguments:

  • quick_deps
  • nested
  • preprocess

asymptote(%args)

Compilaciones y cachés Asymptote bloques de código con comillas dobles para gráficos vectoriales activados para lienzo HTML5-WebGL

Mandatory Arguments:

  • view
  • lang
  • path

skip(%args)

No los construyas en absoluto.

En su lugar, cree los archivos de origen generados asociados (por ejemplo, .bib\$lang ↦\mapsto \$base.page/bibliography.yml\$lang) que se va a crear en una ejecución de sistema de creación secundaria.

yml2ext(%args)

Convertir archivos YAML, normalmente en JSON.

Optional Arguments:

  • ext valores por defecto para json
  • filter valores por defecto para json_raw
  • template sustituciones filter expresión predeterminada

csv2ext(%args)

Convierte archivos CSV, normalmente en JSON.

Optional Arguments:

  • ext valores por defecto para json
  • filter valores por defecto para json_raw
  • template sustituciones filter expresión predeterminada

fetch_deps($path, $data, $quick)

Refactores $data argumento hashref como una referencia de matriz ordenada de registro de hora de arrayrefs de 2 elementos.

La primera entrada en cada arrayref de 2 elementos es el nombre de ruta de archivo, el segundo elemento es el resultado read_text_file hashref para ese nombre de ruta.

Devuelve una lista de los nuevos archivos de origen resultantes si $quick > 2.

Mandatory Arguments:

  • path
  • data - entrada como hashref; almacena arrayref resultante de deps al devolver
  • quick - se define por defecto en 2

breadcrumbs($path)

Devuelve la lista de rutas de navegación HTML para $path.

memoize(%args)

Guarda la construcción; se utiliza principalmente con fetch_deps y quick_deps > 2.

comment(%args)

Genera SSI-includable HTML5 fragmento para un comentario de página.

next_view(%args)

Utilidad para el procesamiento secuencial $args{view}.

ssi(%args)

Evalúa recursivamente ssi etiquetas.

offline(%args)

Ejecuta el next_view en modo fuera de línea.

snippet(%args)

Procesa el código externo líneas de fragmento, normalmente importando sus ubicaciones de origen en GitHub en bloques de rebaja con aislamiento específicos del lenguaje de programación. Ejemplo aquí.

reconstruct(%args)

Reprocesos Template directivas en el contenido incorporado de next_view.

Extensiones de archivos Trims desde enlaces locales.

Normaliza los enlaces locales (./ y ../).

langify_template(%args)

Anexos $args{lang} a $args{template}.

Agrega una cadena de título a los enlaces de rebaja. Normalmente se debe utilizar bajo el offline para evitar tirar de títulos de sitios remotos, lo que puede poner un arrastre significativo en los tiempos de creación de página.

 


SunStarSys::Util — biblioteca de utilidades para lib/path.pm y lib/view.pm

 

read_text_file($file, $out, $content_lines)

Procesador de archivos de texto universal de Orion

Analiza cabeceras+contenido de archivo codificado UTF-8 $file y almacena los resultados en hashref $out. $content_lines es el número máximo (opcional) de líneas de contenido que se van a leer.

Devuelve el número real de líneas leídas (incluidas las cabeceras).

$file puede ser una referencia a una cadena raw, que representa el contenido completo de un archivo. Los resultados en $out seguirá siendo UTF-8 codificado.

copy_if_newer($src, $dest)

Copias $src a $dest si el registro de hora de modificación del primero es más reciente que el segundo.

Al copiar, además, gzip-comprime el $dest archivo si es un archivo de texto y agrega “.gz” extensión del nombre. GZIP la compresión se puede desactivar estableciendo $ENV{NO_COPY_COMPRESS}=1.

get_lock($lockfile)

Toma un bloqueo exclusivo (f) (para el proceso UNIX actual) en $lockfile.

shuffle(\@deck)

aleatorio in situ (Fisher-Yates) de @deck.

sort_tables($content)

Ordena las tablas de rebaja en $content según la especificación de columna de cada tabla.

Se puede ordenar exactamente una columna por tabla, opcionalmente numéricamente n, ya sea descendente v o ascendente ^ orden.

fixup_code($prefix, $type, @_)

Tiras $prefix de cada arg en @_.

La finalidad del $type argumento es específico de la implementación, pero se utiliza principalmente para sembrar la editor.md "mode" para procesar este contenido en @_.

unload_package($pkg)

Descargas agresivas Perl Paquete (hoja) $pkg de la tabla de símbolos (STASH).

purge_from_inc(@paths)

Elimina @paths desde @INC.

touch(@_)

Toca todos los archivos en @_. Si no se transfiere ningún argumento, utiliza $_.

normalize_svn_path(@_)

Normaliza todas las rutas en @_ para un uso seguro como argumentos crudos para SVN::Client comandos.

sanitize_relative_path(@_)

Asegura rutas en @_ para su uso como caminos relativos puros en Dotiac::DTL (Django Template) comandos específicos de la ruta.

parse_filename($path)

Envoltorio alrededor File::Basename::fileparse. Sin argumentos, utiliza $_ como nombre de archivo que se va a analizar.

walk_content_tree($code)

Camina condicionalmente el ./content árbol de la salida del sistema de creación; primero normalizando $_ como la subruta raíz de contenido formal y, a continuación, invocando $code->() en cada elemento del árbol-camino.

Para la mayoría de las construcciones, el paseo nunca sucede — en su lugar, la compilación se basa en los datos almacenados en caché de compilaciones anteriores.

La única manera de forzar un paseo es estableciendo $path::use_cache a un valor falso en los módulos proporcionados por el usuario. De lo contrario, este comportamiento es gestionado por expertos por el tecnología de compilación incremental.

Devuelve 1 si el recorrido realmente se ha realizado, en lugar de depender de datos almacenados en caché. De lo contrario, devuelve un valor falso.

archived($path)

Marca cada Status: archived $path (de una manera específica del lenguaje natural). Usos $_ si no se transfieren argumentos.

Archivar archivos de Markdown es una forma natural de decirle a Orion “dejar de prestar atención a la ubicación de enlace permanente de este archivo”, a menos que se actualice de nuevo, en cuyo caso se actualizará la ubicación de archivado. En particular, los archivos archivados no aparecen en los listados de directorios dentro del propio CMS de Orion; tiene que navegar a la propia página activa para poder editarla nuevamente en línea.

seed_file_deps($path)

Actualizaciones seguras %path::dependencies para ello $path, basándose en su dependencies cabecera glob(s).

Se utiliza de forma predeterminada $_ como ruta si no se transfieren argumentos.

seed_file_acl($path)

Actualizaciones seguras @path::acl para ello $path, basándose en su acl especificación de cabecera.

Se utiliza de forma predeterminada $_ como ruta si no se transfieren argumentos.

Load

Igual que YAML::XS::Load.

Dump

Igual que YAML::XS::Dump.