Class: SoarLexicon::Lexicon

Inherits:
Object
  • Object
show all
Defined in:
lib/soar_lexicon.rb

Constant Summary collapse

WADL_XSL =
"/wadl/wadl.xsl"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Lexicon

Returns a new instance of Lexicon.



10
11
12
# File 'lib/soar_lexicon.rb', line 10

def initialize(app)
  @app = app
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



8
9
10
# File 'lib/soar_lexicon.rb', line 8

def app
  @app
end

Class Method Details

.describe(lexicon) ⇒ Object



21
22
23
24
25
# File 'lib/soar_lexicon.rb', line 21

def self.describe(lexicon)
  return nil if lexicon.nil?
  translator = Wadling::LexiconTranslator.new(SoarLexicon::Lexicon::WADL_XSL)
  translator.translate_resources_into_wadl(lexicon)
end

.describe_resource(lexicon, route) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/soar_lexicon.rb', line 27

def self.describe_resource(lexicon, route)
  return nil if lexicon.nil? or lexicon[route].nil?
  translator = Wadling::LexiconTranslator.new(SoarLexicon::Lexicon::WADL_XSL)
  data = {}
  data[route] = lexicon[route]
  translator.translate_resources_into_wadl(data)
end

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
# File 'lib/soar_lexicon.rb', line 14

def call(env)
  request = Rack::Request.new(env)
  return respond(SoarLexicon::Lexicon::describe(env['lexicon'])) if Regexp.new('/lexicon').match(request.path)
  return respond(SoarLexicon::Lexicon::describe_resource(env['lexicon'], request.path)) if request.env['QUERY_STRING'] == 'wadl'
  app.call(env)
end