Log of /ezc/trunk
Directory Listing
Revision
445 -
Directory Listing
-
[select for diffs]
Modified
Thu Nov 7 10:16:10 2013 UTC
(9 years, 4 months ago)
by
tomek
Diff to
previous 442
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
420 -
Directory Listing
-
[select for diffs]
Modified
Sat Jun 30 23:24:09 2012 UTC
(10 years, 8 months ago)
by
tomek
Diff to
previous 394
fixed: in Generator: empty_stream() should be inited with its default cctor
(an error when compiling with clang)
Revision
394 -
Directory Listing
-
[select for diffs]
Modified
Sat Mar 3 20:58:55 2012 UTC
(11 years ago)
by
tomek
Diff to
previous 393
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
(11 years ago)
by
tomek
Diff to
previous 392
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
(11 years ago)
by
tomek
Diff to
previous 380
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, 2 months ago)
by
tomek
Diff to
previous 378
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, 10 months ago)
by
tomek
Diff to
previous 333
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, 1 month ago)
by
tomek
Diff to
previous 332
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, 2 months ago)
by
tomek
Diff to
previous 330
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, 3 months ago)
by
tomek
Diff to
previous 328
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, 3 months ago)
by
tomek
Diff to
previous 327
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, 4 months ago)
by
tomek
Diff to
previous 326
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, 4 months ago)
by
tomek
Diff to
previous 305
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, 6 months ago)
by
tomek
Diff to
previous 300
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, 7 months ago)
by
tomek
Diff to
previous 298
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, 8 months ago)
by
tomek
Diff to
previous 297
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, 9 months ago)
by
tomek
Diff to
previous 292
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
(13 years, 1 month ago)
by
tomek
Diff to
previous 291
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, 3 months ago)
by
tomek
Diff to
previous 241
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, 1 month ago)
by
tomek
Diff to
previous 93
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, 3 months ago)
by
tomek
Diff to
previous 89
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, 3 months ago)
by
tomek
Diff to
previous 86
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, 1 month ago)
by
tomek
Original Path:
cgi/ezc/trunk
Diff to
previous 7
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
7 -
Directory Listing
-
[select for diffs]
Modified
Fri Jan 26 19:29:36 2007 UTC
(16 years, 1 month ago)
by
tomek
Original Path:
cgi/ezc/trunk
Diff to
previous 6
completely rewritten
* Ezc is now a namespace
* added Ezc::Pattern
* added Ezc::Generator
added [if-one]
fixed a problem with memory lack
Revision
6 -
Directory Listing
-
[select for diffs]
Modified
Thu Jan 25 21:42:54 2007 UTC
(16 years, 1 month ago)
by
tomek
Original Path:
cgi/ezc/trunk
Diff to
previous 5
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)