Changeset 1117
- Timestamp:
- 2008-07-20 14:58:45 (6 months ago)
- Files:
-
- trunk/lib/parser/lib/rules/zena.rb (modified) (13 diffs)
- trunk/test/helpers/zena_parser/errors.yml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/parser/lib/rules/zena.rb
r1116 r1117 83 83 end 84 84 85 def self.parse_class( node_class)86 if node_class.kind_of?(Array)87 if node_class[0].kind_of?(String)88 [Module::const_get( node_class[0])]89 else 90 node_class91 end 92 else 93 if node_class.kind_of?(String)94 Module::const_get( node_class)95 else 96 node_class85 def self.parse_class(klass) 86 if klass.kind_of?(Array) 87 if klass[0].kind_of?(String) 88 [Module::const_get(klass[0])] 89 else 90 klass 91 end 92 else 93 if klass.kind_of?(String) 94 Module::const_get(klass) 95 else 96 klass 97 97 end 98 98 end … … 1042 1042 # relation 1043 1043 list_finder, klass = build_finder_for(:all, values) 1044 return unless list_finder 1044 1045 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1045 1046 end … … 1538 1539 if !@params[:in] && !@params[:where] && !@params[:from] && !@params[:find] 1539 1540 finder, klass = build_finder_for(:first, 'icon', @params.merge(:or => 'image')) 1541 return unless finder 1540 1542 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1541 1543 do_var(finder, :node_class => klass) … … 1655 1657 unless lnode = find_stored(Node, @params[:href]) 1656 1658 finder, klass = build_finder_for(:first, @params[:href]) 1659 return unless finder 1657 1660 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1658 1661 opts << ", :href=>#{finder}" … … 1686 1689 if sharp_in = @params[:in] 1687 1690 finder, klass = build_finder_for(:first, sharp_in, {}) 1691 return unless finder 1688 1692 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1689 1693 opts << ", :sharp_in=>#{finder}" … … 1732 1736 if @params[:src] 1733 1737 finder, klass = build_finder_for(:first, @params[:src]) 1738 return unless finder 1734 1739 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1735 1740 img = finder … … 1744 1749 res += ")" 1745 1750 if @params[:link] 1746 link, klass = build_finder_for(:first, @params[:link]) 1751 finder, klass = build_finder_for(:first, @params[:link]) 1752 return unless finder 1747 1753 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1748 res = "node_link(:node=>#{ link}, :text=>#{res})"1754 res = "node_link(:node=>#{finder}, :text=>#{res})" 1749 1755 end 1750 1756 "<%= #{res} %>" … … 1790 1796 1791 1797 finder, klass = build_finder_for(:all, finder, @params, [@date_scope]) 1798 return unless finder 1792 1799 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 1793 1800 res = <<-END_TXT … … 1874 1881 count ||= Node.plural_relation?(method) ? :all : :first 1875 1882 finder, klass = build_finder_for(count, method, @params) 1883 return unless finder 1876 1884 if count == :all 1877 1885 # plural … … 1926 1934 if (count == :first) 1927 1935 if rel == 'self' 1928 return [node, self.node_class]1936 return [node, node_class] 1929 1937 elsif rel == 'main' 1930 1938 return ["@node", Node] … … 1964 1972 1965 1973 unless sql_query 1966 # is 'out' here a good idea ?1967 1974 out parser_error(query_errors.join(' '), pseudo_sql.join(', ')) 1968 return ['nil', NilClass]1975 return nil 1969 1976 end 1970 1977 … … 2140 2147 end 2141 2148 2142 # TODO: replace symbols by real classes2149 # Class of the current 'node' object (can be Version, Comment, Node, DataEntry, etc) 2143 2150 def node_class 2144 2151 @context[:node_class] || Node … … 2862 2869 # relation 2863 2870 nodes, klass = build_finder_for(:all, nodes) 2871 return unless nodes 2864 2872 return parser_error("invalid class (#{klass})") unless klass.ancestors.include?(Node) 2865 2873 end trunk/test/helpers/zena_parser/errors.yml
r1042 r1117 18 18 bad_query: 19 19 src: "<r:images where='foo bar baz'>ok</r:images>" 20 tem: "<span class='parser_error'>[images where foo bar baz] invalid field or value \"foo\"</span><% if nil -%>ok<% end -%>" 21 res: "<span class='parser_error'>[images where foo bar baz] invalid field or value \"foo\"</span>" 20 tem: "<span class='parser_error'>[images where foo bar baz] invalid field or value \"foo\"</span>" 22 21 23 22 bad_field_in_query: … … 27 26 bad_relation: 28 27 src: "<div do='categories in site' do='each' join=', ' do='[name]'/>" 29 tem: "/<% if nil -%>/" 30 res: "<span class='parser_error'>[categories in site] unknown relation 'categories'</span>" 28 tem: "<div><span class='parser_error'>[categories in site] unknown relation 'categories'</span></div>" 31 29 32 30 bad_order_clause:
