class Casbin::Model::Model

Constants

SECTION_NAME_MAP

Public Instance Methods

add_def(sec, key, value) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 30
def add_def(sec, key, value)
  return false if value == ''

  ast = Assertion.new(key: key, value: value)
  %w[r p].include?(sec) ? ast_tokens_set(ast, key) : model_sec_set(ast)

  model[sec] ||= {}
  model[sec][key] = ast
end
load_model(path) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 20
def load_model(path)
  cfg = Config::Config.new_config(path)
  load_sections(cfg)
end
load_model_from_text(text) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 25
def load_model_from_text(text)
  cfg = Config::Config.new_config_from_text(text)
  load_sections(cfg)
end
print_model() click to toggle source

Private Instance Methods

ast_tokens_set(ast, key) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 52
def ast_tokens_set(ast, key)
  ast.tokens = ast.value.split(',')
  ast.tokens.each_with_index { |token, i| ast.tokens[i] = "#{key}_#{token.strip}" }
end
get_key_suffix(i) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 76
def get_key_suffix(i)
  i == 1 ? '' : i
end
load_assertion(cfg, sec, key) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 71
def load_assertion(cfg, sec, key)
  value = cfg.get("#{SECTION_NAME_MAP[sec.to_sym]}::#{key}")
  add_def(sec, key, value)
end
load_section(cfg, sec) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 61
def load_section(cfg, sec)
  loop.with_index do |_, i|
    break unless load_assertion(cfg, sec, "#{sec}#{get_key_suffix(i + 1)}")
  end
end
load_sections(cfg) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 67
def load_sections(cfg)
  SECTION_NAME_MAP.each_key { |key| load_section(cfg, key.to_s) }
end
model_sec_set(ast) click to toggle source
# File lib/casbin-ruby/model/model.rb, line 57
def model_sec_set(ast)
  ast.value = Util.remove_comments(Util.escape_assertion(ast.value))
end