Class: DhEasy::Router::Parser
- Inherits:
-
Object
- Object
- DhEasy::Router::Parser
- Includes:
- DhEasy::Router::Plugin::Router
- Defined in:
- lib/dh_easy/router/parser.rb
Overview
Parser router designed to look over page_type for route to the right parser class.
Instance Attribute Summary
Attributes included from DhEasy::Router::Plugin::Router
Instance Method Summary collapse
-
#route(opts = {}) ⇒ Object
Execute the parser class with options as described by router configuration filtering by
page_typeand calling class's instanceparsemethod.
Methods included from DhEasy::Router::Plugin::Router
#class_defined?, #config, #get_class, #initialize, #initialize_hook_router_plugin_router
Instance Method Details
#route(opts = {}) ⇒ Object
Note:
Requires the route class to implement parse instance method.
Execute the parser class with options as described by router
configuration filtering by page_type and calling class's instance
parse method.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/dh_easy/router/parser.rb', line 21 def route opts = {} context = opts[:context] if context.nil? raise ArgumentError.new('Must send a context to the parser.') end page_type = context.page['page_type'].strip.downcase class_name = nil config['parser']['routes'].each do |item| # Look for page type next if item['page_type'].strip.downcase != page_type # Validate class name executor_class = get_class item['class'] if executor_class.nil? raise NameError.new("Class \"#{item['class']}\" doesn't exists, check your dh_easy config file.") end executor_class.new(opts).parse return end # Page type is not routed, raise an error. raise ArgumentError.new("Page type \"#{page_type}\" is not routed, check your dh_easy config file.") end |