class Authorization::Reader::DSLReader
Top-level reader, parses the methods privileges
and
authorization
. authorization
takes a block with
authorization rules as described in AuthorizationRulesReader. The
block to privileges
defines privilege hierarchies, as
described in PrivilegesReader.
Public Class Methods
factory(obj)
click to toggle source
ensures you get back a DSLReader if you provide a:
DSLReader - you will get it back. String or Array - it will treat it as if you have passed a path or an array of paths and attempt to load those.
# File lib/declarative_authorization/reader.rb, line 71 def self.factory(obj) case obj when Reader::DSLReader obj when String, Array load(obj) end end
load(dsl_files)
click to toggle source
Loads and parses DSL files and returns a new reader
# File lib/declarative_authorization/reader.rb, line 105 def self.load (dsl_files) # TODO cache reader in production mode? reader = new dsl_files = [dsl_files].flatten dsl_files.each do |file| reader.load(file) end reader end
new()
click to toggle source
# File lib/declarative_authorization/reader.rb, line 57 def initialize () @privileges_reader = PrivilegesReader.new @auth_rules_reader = AuthorizationRulesReader.new end
Public Instance Methods
load(dsl_file)
click to toggle source
Load and parse a DSL from the given file name.
# File lib/declarative_authorization/reader.rb, line 93 def load (dsl_file) parse(File.read(dsl_file), dsl_file) if File.exist?(dsl_file) end
load!(dsl_file)
click to toggle source
Load and parse a DSL from the given file name. Raises Authorization::Reader::DSLFileNotFoundError if the file cannot be found.
# File lib/declarative_authorization/reader.rb, line 99 def load! (dsl_file) raise ::Authorization::Reader::DSLFileNotFoundError, "Error reading authorization rules file with path '#{dsl_file}'! Please ensure it exists and that it is accessible." unless File.exist?(dsl_file) load(dsl_file) end
parse(dsl_data, file_name = nil)
click to toggle source
Parses a authorization DSL specification from the string given in
dsl_data
. Raises DSLSyntaxError if errors occur on parsing.
# File lib/declarative_authorization/reader.rb, line 82 def parse (dsl_data, file_name = nil) if file_name DSLMethods.new(self).instance_eval(dsl_data, file_name) else DSLMethods.new(self).instance_eval(dsl_data) end rescue SyntaxError, NoMethodError, NameError => e raise DSLSyntaxError, "Illegal DSL syntax: #{e}" end