Sha256: 8666e154ff521b8f37d12a2bd8957268d481964dea24a26e95fa393463d33808
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
require_relative 'yasuri_node' require_relative 'yasuri_text_node' require_relative 'yasuri_struct_node' require_relative 'yasuri_links_node' require_relative 'yasuri_paginate_node' require_relative 'yasuri_map_node' module Yasuri class NodeGenerator def gen_recursive(&block) @nodes = [] instance_eval(&block) @nodes end def method_missing(name, pattern=nil, **args, &block) node = NodeGenerator.gen(name, pattern, **args, &block) raise "Undefined Node Name '#{name}'" if node == nil @nodes << node end def self.gen(method_name, xpath, **opt, &block) children = Yasuri::NodeGenerator.new.gen_recursive(&block) if block case method_name when /^text_(.+)$/ # Todo raise error xpath is not valid Yasuri::TextNode.new(xpath, $1, children || [], **opt) when /^struct_(.+)$/ # Todo raise error xpath is not valid Yasuri::StructNode.new(xpath, $1, children || [], **opt) when /^links_(.+)$/ # Todo raise error xpath is not valid Yasuri::LinksNode.new(xpath, $1, children || [], **opt) when /^pages_(.+)$/ # Todo raise error xpath is not valid Yasuri::PaginateNode.new(xpath, $1, children || [], **opt) when /^map_(.+)$/ Yasuri::MapNode.new($1, children, **opt) else nil end end # of self.gen(method_name, xpath, **opt, &block) end # of class NodeGenerator end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yasuri-3.3.2 | lib/yasuri/yasuri_node_generator.rb |
yasuri-3.3.1 | lib/yasuri/yasuri_node_generator.rb |