Issue 55 in json-template: Section names not looked up properly

17 views
Skip to first unread message

json-t...@googlecode.com

unread,
Mar 5, 2010, 1:44:50 AM3/5/10
to json-t...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 55 by micah.stetson: Section names not looked up properly
http://code.google.com/p/json-template/issues/detail?id=55

Given this data: {"a":{"b":{"c":1}},"d":2}
Try processing Template 1:

{.section a.b}{c}{.end}

Or Template 2:

{.section a}{.section d}{@}{.end}{.end}

I expect template 1 to output "1" and template 2 to output "2". Instead,
template 1 yields "EXCEPTION: UndefinedVariable: c is not defined", and
template 2 yields "null".

I'm using sroussey's PHP version of JSON Template pulled this evening from
his repo here:

https://sroussey-json-template.googlecode.com/hg/

But I think the problem affects more than the PHP version, it's at least
present in the python version as well.

This diff against sroussey-json-template fixes the PHP version:

diff -r b9d923fb113e php/jsontemplate.php
--- a/php/jsontemplate.php Mon Oct 12 23:49:51 2009 -0700
+++ b/php/jsontemplate.php Thu Mar 04 22:20:02 2010 -0800
@@ -372,24 +372,10 @@

function PushSection($name)
{
- $end = end($this->stack);
- $new_context=null;
- if(is_array($end)){
- if(isset($end[$name])){
- $new_context = $end[$name];
- }
- }elseif(is_object($end)){
- // since json_decode returns StdClass
- // check if scope is an object
- if(property_exists($end,$name)){
- $new_context = $end->$name;
- } else if (method_exists($end,$getter="get$name")){
- $new_context = $end->$getter();
- } else if (method_exists($end,'__get')){
- try {
- $new_context = $end->$name;
- } catch (exception $e){}
- }
+ try {
+ $new_context = $this->Lookup($name);
+ } catch(JsonTemplateUndefinedVariable $e) {
+ $new_context = null;
}
$this->name_stack[] = $name;
$this->stack[] = $new_context;
@@ -653,7 +639,7 @@
class JsonTemplateModule
{

- public $section_re = '/^(?:(repeated)\s+)?(section)\s+(@|[A-Za-z0-
9_-]+)(?:\b(.*))?$/';
+ public $section_re = '/^(?:(repeated)\s+)?(section)\s+(@|[A-Za-z0-
9_-]+(\.[A-Za-z0-9_-]+)*)(?:\b(.*))?$/';
public $if_re = '/^if\s+(@|[A-Za-z0-9_-]+)(\?)?(?:\b(.*?))?\s*$/';
public $option_re = '/^([a-zA-Z\-]+):\s*(.*)/';
public $option_names = array('meta','format-char','default-formatter');


--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings

json-t...@googlecode.com

unread,
Mar 5, 2010, 3:40:47 PM3/5/10
to json-t...@googlegroups.com
Updates:
Owner: sroussey

Comment #1 on issue 55 by sroussey: Section names not looked up properly
http://code.google.com/p/json-template/issues/detail?id=55

I haven't contributed back the changes I've made recently. I think a fix
for this is
one of them (and it is elsewhere in the code). I'll get on this next week.

peg

unread,
Mar 23, 2010, 7:51:06 AM3/23/10
to JSON Template
hi all,

Similar problem with javascript ?

datas = '{ "items":[ { "name": "item1" }, { "name": "item2" } ],
"show": "true" }'

template = "{.section items}{.section show} SHOW {.or} DON'T SHOW
{.end}{.or} NO ITEMS {.end}"

result = "DON'T SHOW"

thanks


On 5 mar, 21:40, json-templ...@googlecode.com wrote:
> Updates:
>         Owner: sroussey
>

> Comment #1 on issue 55 by sroussey: Section names not looked up properlyhttp://code.google.com/p/json-template/issues/detail?id=55

Miles

unread,
Mar 24, 2010, 10:48:55 PM3/24/10
to JSON Template
On Mar 23, 4:51 am, peg <philippe.gi...@gmail.com> wrote:
> hi all,
>
> Similar problem with javascript ?
>
> datas =  '{ "items":[ { "name": "item1" },  { "name": "item2" } ],
> "show": "true" }'
>
> template  = "{.section items}{.section show} SHOW {.or} DON'T SHOW
> {.end}{.or} NO ITEMS {.end}"
>
> result = "DON'T SHOW"
>
> thanks


We have similar problem - even with single section - if the section is
not null, nothing appears, if it is null, it correctly executes
{.or}

it's a serious bug - tried to look at source but couldn't see fix
right away - we really need a fix or workaround so would appreciate
any help. thks.

Steven Roussey

unread,
Mar 25, 2010, 12:03:52 AM3/25/10
to JSON Template
OK, I'm looking at this tonight and tomorrow night. So please, if you
can, provide a test case, and which version (JS/PHP, etc) and I'll
make sure it passes.

json-t...@googlecode.com

unread,
Mar 25, 2010, 10:22:24 PM3/25/10
to json-t...@googlegroups.com
Updates:
Status: Started

Comment #2 on issue 55 by sroussey: Section names not looked up properly
http://code.google.com/p/json-template/issues/detail?id=55

I'm not on my normal PC, so I don't have the test harness setup, so I
pushed a change
to the sroussey-json-template repo. There were many logic errors,
particularly with
scopes. I wish I had update the repo as I fixed them, but instead they are
all in one
big change. I'm checking on the JS version that I use, and will update that
as well if
warranted.

Steven Roussey

unread,
Mar 25, 2010, 10:58:32 PM3/25/10
to JSON Template
My JS version (that I use) has diverged quite a bit over time, and I
am not very motivated to try and merge back. When I run this:

data= { "items":[ { "name": "item1" }, { "name": "item2" } ], "show":


"true" };
template = "{.section items}{.section show} SHOW {.or} DON'T SHOW
{.end}{.or} NO ITEMS {.end}"

t=jsontemplate.Template(template)
t.expand(data)

I get the result:

" SHOW "

Which json-template.js are you using?

-steve--


On Mar 24, 7:48 pm, Miles <miles.to...@gmail.com> wrote:

MilesTogoe

unread,
Mar 26, 2010, 1:12:48 PM3/26/10
to json-t...@googlegroups.com
Steven Roussey wrote:
> My JS version (that I use) has diverged quite a bit over time, and I
> am not very motivated to try and merge back. When I run this:
>
> data= { "items":[ { "name": "item1" }, { "name": "item2" } ], "show":
> "true" };
> template = "{.section items}{.section show} SHOW {.or} DON'T SHOW
> {.end}{.or} NO ITEMS {.end}"
> t=jsontemplate.Template(template)
> t.expand(data)
>
> I get the result:
>
> " SHOW "
>
> Which json-template.js are you using?
>
We're running:
Fedora 12
node v0.1.32-4
node-router

json-template - we don't see a version listed anywhere ! not in docs,
not in source ! we did download it about 2 wks ago but don't see our
original clone download date

Steven Roussey

unread,
Mar 26, 2010, 2:19:33 PM3/26/10
to json-template
Where did you download json-template from, then?

Steven Roussey
Network54 Corp.

> You received this message because you are subscribed to the Google Groups
> "JSON Template" group.
> To post to this group, send email to json-t...@googlegroups.com.
> To unsubscribe from this group, send email to
> json-templat...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/json-template?hl=en.
>
>

MilesTogoe

unread,
Mar 26, 2010, 11:02:27 PM3/26/10
to json-t...@googlegroups.com, Steven Roussey
On 03/26/2010 11:19 AM, Steven Roussey wrote:
> Where did you download json-template from, then?
>

we cloned it from github which of course has a commit id but once on our
system there is no version info with the source code or are we missing
something. Anyway it was downloaded about March 10.

peg

unread,
Apr 13, 2010, 5:34:19 AM4/13/10
to JSON Template
hi,
Sorry for being slow.
What version do you use ?
I'm using the
http://code.google.com/p/json-template/
git source version.

What is the difference with your version ?

thanks
Phil


On 26 mar, 20:19, Steven Roussey <srous...@gmail.com> wrote:
> Where did you download json-template from, then?
>
> Steven Roussey
> Network54 Corp.
>

json-t...@googlecode.com

unread,
Aug 18, 2010, 11:04:03 PM8/18/10
to json-t...@googlegroups.com

Comment #3 on issue 55 by nadir.seen.fire: Section names not looked up
properly
http://code.google.com/p/json-template/issues/detail?id=55

I believe this issue affects more than just the PHP and Python, it seams to
be present as well I believe.

While using JSON-Template I've had issues with higher level names not being
looked up properly in the same way described. One time I rewrote the logic
of a template in a somewhat unintuitive way to get around it. Now I appear
to have run into another one which will be more trouble. I may have to
switch template systems.

Reply all
Reply to author
Forward
0 new messages