mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 01:30:22 +00:00
* Add a larger set of sample files for Pan This is a fairly good cross section of Pan based on code from: * https://github.com/quattor/template-library-examples * https://github.com/quattor/template-library-core * Add Pan language grammar
57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
################################################################################
|
|
# This is 'namespaces/standard/pan/functions.tpl', a pan-templates's file
|
|
################################################################################
|
|
#
|
|
# VERSION: 3.2.7, 21/08/09 22:22
|
|
# AUTHOR: Martin Bock
|
|
# MAINTAINER: Example Maintainer <support@example.org>
|
|
# LICENSE: http://cern.ch/eu-datagrid/license.html
|
|
#
|
|
################################################################################
|
|
# Coding style: emulate <TAB> characters with 4 spaces, thanks!
|
|
################################################################################
|
|
#
|
|
# Function definitions
|
|
#
|
|
################################################################################
|
|
|
|
declaration template pan/functions;
|
|
|
|
include 'pan/types';
|
|
|
|
############################################################
|
|
##=
|
|
## @function push
|
|
## @# push zero or more values onto the end of a list.
|
|
##+If the list does not exist or is not defined a new list is
|
|
##+created.
|
|
## @syntax value:element
|
|
## @param:value... the values to push onto list
|
|
## @example
|
|
##+# "/data" will contain list (1,2,3,4)
|
|
##+"/data" = list(1,2);
|
|
##+"/data" = push(3,4);
|
|
##=
|
|
############################################################
|
|
function push = {
|
|
# Get the reference to SELF or create an empty list
|
|
# as necessary.
|
|
if (exists(SELF) && is_list(SELF)) {
|
|
v = SELF;
|
|
} else if (!exists(SELF) || !is_defined(SELF)) {
|
|
v = list();
|
|
} else {
|
|
error("push can only be applied to a list");
|
|
};
|
|
|
|
# Merge the arguments into the given array. Neither the
|
|
# first/next or merge functions can be used because the
|
|
# ARGV array cannot be directly referenced.
|
|
i = 0;
|
|
while (i < ARGC) {
|
|
v[length(v)] = ARGV[i];
|
|
i = i + 1;
|
|
};
|
|
v;
|
|
};
|