Log of /ezc
Directory Listing
Revision
1041 -
Directory Listing
-
[select for diffs]
Modified
Thu Aug 25 13:11:33 2016 UTC
(6 years, 5 months ago)
by
tomek
Diff to
previous 1038
,
to
selected 976
changed: in PatternParser: the way how nested ezc funcions are parsed
now we can have: [fun] [[fun]] or even [[[fun]]]
also when using keywords: [if fun] [if [fun]] or [if [[[[fun]]]]]
Revision
1038 -
Directory Listing
-
[select for diffs]
Modified
Mon Apr 4 15:53:11 2016 UTC
(6 years, 10 months ago)
by
tomek
Diff to
previous 1037
,
to
selected 976
changed: a function can have a postfix now e.g. [my_function:my_postfix]
this will be mainly used in conjuction with [for ...] statements
[for my_function:xxx]
[for my_function]
[my_function_value]
[my_function_valu:xxx] (references the first loop)
[end]
[end]
added: to FunInfo<>: a reference to current item from a pattern (const Item & item)
similary on the stack is added a pointer to an item
by having this reference you can compare a function's name and its postfix
added methods:
Stack * FindLastFor(const std::wstring & name);
Stack * FindLastFor(const std::wstring & name, const std::wstring & postfix);
template<class FunUserObject> FunUserObject * FindUserObject(const std::wstring & function_name, Stack ** ezc_stack = 0);
Revision
1014 -
Directory Listing
-
[select for diffs]
Modified
Thu Nov 12 09:53:20 2015 UTC
(7 years, 2 months ago)
by
tomek
Diff to
previous 1011
,
to
selected 976
changed: [ezc streams "..."] to [ezc out "..."] or just [out "..."]
the syntax has been changed, now [ezc ...] is used with [end] statement
added: OutStreams<StreamType> class with a pool with output streams,
the Generator::Generate() method can take it as its argument
(Generator API has been changed)
Revision
1011 -
Directory Listing
-
[select for diffs]
Modified
Sun Jun 14 18:20:00 2015 UTC
(7 years, 7 months ago)
by
tomek
Diff to
previous 1004
,
to
selected 976
added: now ezc functions can be methods of a special object
added: objects.h with a base class for the object
and Objects container (similar as Functions container)
Revision
1004 -
Directory Listing
-
[select for diffs]
Modified
Sun Mar 8 02:31:21 2015 UTC
(7 years, 11 months ago)
by
tomek
Diff to
previous 988
,
to
selected 976
changed: the way how functions' arguments are parsed
now this [fun1 fun2 "something" fun3]
will call fun1 with three arguments: fun2, "something" and fun3
and this [fun1 [fun2 "something"] fun3]
will call fun1 with two arguments: [fun2 "something] and fun3
"something" is an argument for fun2 function
removed: statements: [if-one] [if-any] [if-no] [if-any-no] [if-one-no]
Revision
988 -
Directory Listing
-
[select for diffs]
Modified
Sun Nov 2 17:26:56 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 987
,
to
selected 976
removed: statements: [if-index ...] [is ...] and [is-no ...]
we can provide a user definied function which does the same
added: to FunInfo<>:
Stack * stack_tab
size_t stack_index
a stack table and an index to the current stack item
Revision
981 -
Directory Listing
-
[select for diffs]
Modified
Tue Oct 28 17:46:24 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 979
,
to
selected 976
added: [return ...] statement for a block
changed: a user definied function now is able to get a string and a boolean value (parameters)
changed: we do not longer support aliases for variables
a variable is only a string and a boolean value now
Revision
979 -
Directory Listing
-
[select for diffs]
Modified
Tue Oct 21 07:21:20 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 977
,
to
selected 976
fixed: in cache.cpp there was headerfile_ezc_cache macro used
(copied from cache.h)
fixed: in Generator: memory leak from block_stack
objects pointing by block_stack_tab[].out_stream
were not deleted
fixed: in Item: ClearCache() didn't clear all pointers
Function::parameters table were not used
Revision
977 -
Directory Listing
-
[select for diffs]
Modified
Sun Oct 19 21:09:34 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 976
fixed: function and blocks were incorrectly cached
(now we have a tree in Item::Function.parameters too
and we should go through that tree as well)
fixed: in Generator: Item::Function.par should be cleared
only if Item::Function.name is not empty
changed: in Generator: use method 'write' of an output stream
instead of operator<<
added: Clear() method to Blocks class
changed: in Generator
Generator has its own Vars class now
we don't need SetVars() method
added: to Generator:
void CanUseCache(bool can_use_cache);
// set whether or not we can use cache for functions or blocks
// true by default
void CanUseVars(bool can_use_variables);
// set whether or not we can use variables: [def ...] statement
// true by default
Revision
976 -
Directory Listing
-
[selected]
Modified
Sun Oct 19 05:46:49 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 975
removed: AssignString() functions
now we are using UTF-8 <-> wide characters conversions
Revision
975 -
Directory Listing
-
[select for diffs]
Modified
Sun Oct 19 05:42:25 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 973
,
to
selected 976
changed: SetCommentary() methods from Pattern were moved to PatternParser and Generator
added: caching functions and blocks
caching is added into Pattern and Blocks
methods: CacheFunctions() and CacheBlocks()
Revision
972 -
Directory Listing
-
[select for diffs]
Modified
Fri Oct 17 22:14:28 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 971
,
to
selected 976
fixed: a 'typename' keywords were missing in some places
fixed: removed GetStringFromStream() method
it returns a reference to a local object (from stream.str())
now the code is used directly
Revision
971 -
Directory Listing
-
[select for diffs]
Modified
Fri Oct 17 21:48:11 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 970
,
to
selected 976
changed: a header info in each source file to:
* This file is a part of EZC -- Easy templating in C++ library
* and is distributed under the BSD 3-Clause licence.
Revision
970 -
Directory Listing
-
[select for diffs]
Modified
Fri Oct 17 21:36:55 2014 UTC
(8 years, 3 months ago)
by
tomek
Diff to
previous 969
,
to
selected 976
added: possibility to define a block
changed: in Functions
Functions are only for user-defined functions now
(before they could remember a string variable too)
added: class Vars for variables
a variable can be a string or an alias to an other function or block
added: now we can have nested functions calls e.g.:
[function1 [function2]]
in the above example an output (stream) from function2 will be passed
as the first argument to funcion1 (will be passed as a string)
removed: UTF8() method from PatternParser
now it is treated that when we have only std::string (or char*)
that this is an UTF-8 string
Revision
969 -
Directory Listing
-
[select for diffs]
Modified
Sat Oct 11 19:56:48 2014 UTC
(8 years, 4 months ago)
by
tomek
Diff to
previous 968
,
to
selected 976
changed: Pattern class has been split into two classes: Pattern and PatternParser
in Pattern we have only the tree
in PatternParser there is the whole logic used to parse a file
Revision
445 -
Directory Listing
-
[select for diffs]
Modified
Thu Nov 7 10:16:10 2013 UTC
(9 years, 3 months ago)
by
tomek
Diff to
previous 442
,
to
selected 976
added: possibility to generate output to more than one stream
Generate() methods can take std::vector with pointers to streams
added: 'ezc' keyword -- currently only for selecting streams
e.g.
[ezc stream "0" "3"] - after now the output is generated to streams 0 and 3
Revision
394 -
Directory Listing
-
[select for diffs]
Modified
Sat Mar 3 20:58:55 2012 UTC
(10 years, 11 months ago)
by
tomek
Diff to
previous 393
,
to
selected 976
fixed: Generator: when making [if-index]
[if-index] statement has to look for a last [for] statement on the stack
(because the stack is for all items now)
Revision
393 -
Directory Listing
-
[select for diffs]
Modified
Mon Feb 27 17:39:46 2012 UTC
(10 years, 11 months ago)
by
tomek
Diff to
previous 392
,
to
selected 976
changed: in Generator:
now we have a stack item for all statements [if...] [normal_fun] etc.
previously was only for [for ...] statements
changed: FunInfo<> has a pointer to the current stack item
changed: now we have a static number of stack items (default: 300)
so you can remember a pointer to a stack item and this pointer
is always valid
Revision
391 -
Directory Listing
-
[select for diffs]
Modified
Fri Feb 24 12:04:36 2012 UTC
(10 years, 11 months ago)
by
tomek
Diff to
previous 380
,
to
selected 976
added: FunInfo<>::fun_data
now we have a pointer to FunData struct
by default the pointer is null
you can create an object of a class derived from FunData
an set the pointer to the object
those pointers will be kept on the [for] stack
and will be auto removed
(not finished yet -- need some testing)
added: to FunInfo<>::
bool is_if;
bool is_is;
bool is_normal;
bool is_filter;
removed: from FunInfo<>:
bool is_for_first_iter;
changed: in FunInfo<>:
int iter -> size_t iter
now it indicates the number of a current iteration for the [for] statement
for other statements than [for] this is always zero
(the same old behaviour as before revision 331)
added: in FunInfo<>:
size_t last_iter
it indicates the number of a previous [for] iteration
for a [for] it returns not the current iterator but a value from a previous [for]
Revision
380 -
Directory Listing
-
[select for diffs]
Modified
Tue Jan 17 22:57:06 2012 UTC
(11 years ago)
by
tomek
Diff to
previous 378
,
to
selected 976
added: two flags to FunInfo<> struct:
// indicates that this function is from [for ...] statement
bool is_for;
// indicates that this function is from [for ...] statement
// and this is a first iteration (iter=0 too)
// this is only for convenience -- you don't have to check is_for and iter==0
bool is_for_first_iter;
Revision
344 -
Directory Listing
-
[select for diffs]
Modified
Tue Apr 26 17:17:06 2011 UTC
(11 years, 9 months ago)
by
tomek
Diff to
previous 333
,
to
selected 976
changed: [is...] statements use only the output string now (when comparing)
previously they used FunInfo::res, now they use FunInfo::out
and the out string is not put to the main output stream
added: FunInfo<>::case_sensitive (default true)
when false then [is] statement is comparing in case insensitive manner
changed: the out stream in [if...] [for] statements
the output text is ingored now
Revision
333 -
Directory Listing
-
[select for diffs]
Modified
Wed Jan 26 12:42:49 2011 UTC
(12 years ago)
by
tomek
Diff to
previous 332
,
to
selected 976
added filters:
a new statement [filter]
syntax:
[filter funcion_name]....[end]
everything which is between [filter] and [end] is processed normally and
at the end it is passed to the function (function_name)
FunInfo struct has 'in' input stream now
Revision
331 -
Directory Listing
-
[select for diffs]
Modified
Fri Jan 14 23:59:30 2011 UTC
(12 years ago)
by
tomek
Diff to
previous 330
,
to
selected 976
changed: now [for] statements with the same function can be nested
sample:
[for my_function]
[for my_function]
foo
[end]
[end]
changed: FunInfo::iter has a value from the last [for] statement now
sample:
[for my_function]
[other_function]
[end]
void other_function(Info &i)
{
// here i.iter is the number of iteration
// previously was always zero
}
changed: small optimization in [for]
the proper function is being looking for only once at the beginning
previously it was searched in each iteration
Revision
329 -
Directory Listing
-
[select for diffs]
Modified
Thu Nov 25 22:39:58 2010 UTC
(12 years, 2 months ago)
by
tomek
Diff to
previous 328
,
to
selected 976
added: Pattern::CacheFunctions(Functions<StreamType> & fun)
you can cache all functions (their addresses) in the pattern
changed: now we have two methods for generating content:
Generator<>::Generate(StreamType & o, Pattern & p, Functions<StreamType> & f);
similar like previous -- Set(...) methods were removed as well as the second ctor
and a second one:
Generate(StreamType & o, Pattern & p);
without functions, the functions should be cached beforehand in the pattern
by calling CacheFunctions() method on the pattern
this gives O(1) complexity when looking for a specific function
previously was O(log n)
Revision
328 -
Directory Listing
-
[select for diffs]
Modified
Thu Nov 25 01:55:32 2010 UTC
(12 years, 2 months ago)
by
tomek
Diff to
previous 327
,
to
selected 976
changed in Generator<>:
StreamType
we use method write where the content should not be escaped (html escaping)
we use operator<< where the content can be escaped (such as error messages)
PrintSpecialText() and PrintNormalText() are a little faster now
we use 'write' for a whole text instead of printing each character
Revision
327 -
Directory Listing
-
[select for diffs]
Modified
Tue Nov 23 21:59:52 2010 UTC
(12 years, 2 months ago)
by
tomek
Diff to
previous 326
,
to
selected 976
fixed: performance (memcpy used too often)
in some places there were reserve() method used (on std::wstring/std::string objects)
especially in AssignString() methods
if we add a new string we should check the new size
and only call reserve() if the new size will be greater than existing one
(plus some constant)
added: Functions<>::Size() method
Revision
326 -
Directory Listing
-
[select for diffs]
Modified
Mon Nov 22 01:23:32 2010 UTC
(12 years, 2 months ago)
by
tomek
Diff to
previous 305
,
to
selected 976
added: support for UTF-8 (files utf8.h utf8.cpp)
they can be even used without the rest library
as only a library for converting between wide characters and UTF-8
changed: everywhere we use std::wstring instead of std::string
changed: Generator and Functions are templates now
they take a stream type
renamed: Info to FunInfo and it is a template too
taking a stream type
now you can use other kind of streams with the library
previous was only std::ostringstream
Revision
305 -
Directory Listing
-
[select for diffs]
Modified
Tue Sep 7 23:52:41 2010 UTC
(12 years, 5 months ago)
by
tomek
Diff to
previous 300
,
to
selected 976
added to Generator:
void RecognizeSpecialChars(bool spec);
recognizing some special characters in text patterns (item_text in Patterns)
\r will be a carriage return (13)
\n will be a new line (10)
\t will be a tabulator (9)
\s will be a space
\\ will be one '\'
default: false
void TrimWhite(bool trim);
trimming white characters (at the beginning and at the end of an item_text)
(special char \s if enabled is not treated as a white character here)
default: false
void SkipNewLine(bool skip);
skipping new line characters (from the whole string in an item_text)
but you can use a new line character written as "\n" (if special chars are turn on)
default: false
Revision
299 -
Directory Listing
-
[select for diffs]
Modified
Mon Aug 2 18:47:19 2010 UTC
(12 years, 6 months ago)
by
tomek
Diff to
previous 298
,
to
selected 976
changed: testing file names
now it is allowed to use a slash (we can use directories)
only ".." is not allowed (you cannot go up in a directory structure)
Revision
298 -
Directory Listing
-
[select for diffs]
Modified
Mon Jul 19 23:07:00 2010 UTC
(12 years, 6 months ago)
by
tomek
Diff to
previous 297
,
to
selected 976
changed:
functions can have more than one parameter and the parameters can be used in [if...] statements too
sample:
[normal_function "par1" "par2" "par3"]
[if-one function "par1" "par2" "par3"]...[end]
each function can have its own parameters:
[if-one function1 "par1" "par2" "par3" function2 "par" "par2"]...[end]
changed:
[is] is now [if] (not exactly but very similar)
[is-no] is now [if-no] (the same)
[if] and [if-no] are taking one function (with or without arguments)
sample:
[if function]...[end]
[if function "par1"]...[end]
[if function "par1" "par2" "par3" "par4"]...[end]
[is] is taking two functions now and evaluates them to boolean value
(variables are also evaluated to boolean - if not empty that means true)
[is function1 function2]...[end]
[is variable1 variable2] either variable1 and variable2 are empty or both are not empty
(they don't have to be equal)[end]
added:
[if-any-no fun1 fun2 fun3] the three functions have to return false [end]
[if-one-no fun1 fun2 fun3] one the the three functions have to return false [end]
removed:
extracting the unix directory from the file name (in patterns)
you have to call Pattern::Directory() method first to set directories
Revision
295 -
Directory Listing
-
[select for diffs]
Modified
Sun May 30 21:07:15 2010 UTC
(12 years, 8 months ago)
by
tomek
Diff to
previous 292
,
to
selected 976
added: an optional string parameter to normal statement e.g. [function "parameter"]
parameters to "for" statement [for function "parameter"]
changed: in Info struct there is a "par" std::string reference now
changed: Info::result to Info::res
removed: Info::is
Revision
292 -
Directory Listing
-
[select for diffs]
Modified
Mon Feb 15 00:19:31 2010 UTC
(12 years, 11 months ago)
by
tomek
Diff to
previous 291
,
to
selected 976
fixed: when Pattern::allow_include was false then nothing was read
added: ezc can use the logger from winix
added: we check how many [include] directive was called
(if more than 100 then we break - supposing infinite loop)
added: in Pattern we read from two directories
if a file is not in the first directory then we try to read
from the other one
Revision
260 -
Directory Listing
-
[select for diffs]
Modified
Wed Dec 9 00:34:17 2009 UTC
(13 years, 2 months ago)
by
tomek
Diff to
previous 241
,
to
selected 976
added: Patter::delete_all_white flag
if true all text-items which have only white characters (with new lines as well)
will be deleted
this not actually delete the whole item but only the string
the item will be present with an empty string
default: false
Revision
94 -
Directory Listing
-
[select for diffs]
Modified
Fri Jan 23 23:18:54 2009 UTC
(14 years ago)
by
tomek
Diff to
previous 93
,
to
selected 976
added: Pattern::allow_include flag (default true)
if false there is no allowed [include ...] directive
(this directive will be skipped)
added: Pattern::ParseString(const std::string & str);
Pattern::ParseString(const char * str);
can create the pattern from a string
Revision
91 -
Directory Listing
-
[select for diffs]
Modified
Tue Dec 23 20:08:11 2008 UTC
(14 years, 1 month ago)
by
tomek
Diff to
previous 90
,
to
selected 976
added: directive [if-no fun1 fun2 ...]
if fun1 fun2 ... return false
then the content is evaluated
changed: [if-one fun1 fun2 ...]
when a function (from left to right) returns true
then the content is evaluated
(previous all functions were called)
Revision
88 -
Directory Listing
-
[select for diffs]
Modified
Wed Dec 10 01:46:10 2008 UTC
(14 years, 2 months ago)
by
tomek
Diff to
previous 86
,
to
selected 976
changed: the interface in this version is not the same as previous
added: class Functions, you can define your own set of functions and then
put them into the Generator
added: variables
parser is able to parse the "def" directive:
[def variable "value"]
[def variable another_variable]
[def variable another_function]
variables are put into a Functions object
added: class Info has a reference to std::ostringstream (out)
added: limit for a "for" directive
limit for the whole tree (when genereting)
this is to protect for a case when someone makes an infinite loop
changed: many small changes
Revision
9 -
Directory Listing
-
[select for diffs]
Modified
Sat Jan 27 13:52:18 2007 UTC
(16 years ago)
by
tomek
Original Path:
cgi/ezc
Diff to
previous 7
,
to
selected 976
added Ezc::SplitUnixDirectory(...)
it's possible to give the path into the working directory in the Pattern::ParseFile(...) without using the Pattern::Directory(...)
added [#] (commentary)
[include] now can open a file only in a specific directory
Revision
6 -
Directory Listing
-
[select for diffs]
Modified
Thu Jan 25 21:42:54 2007 UTC
(16 years ago)
by
tomek
Original Path:
cgi/ezc
Diff to
previous 5
,
to
selected 976
Ezc::ReadFile has gone
Ezc::CreateTree takes a name of an input file
added [for ...]
added [if-index ...]
added [is ....]
added [include...] (not all finished)