Class: Concrete::ConcreteSyntaxProvider

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

Defined Under Namespace

Classes: ConcreteSyntax

Instance Method Summary collapse

Constructor Details

#initialize(configDirs, logger, config = nil) ⇒ ConcreteSyntaxProvider

Returns a new instance of ConcreteSyntaxProvider.



9
10
11
12
13
14
# File 'lib/concrete/concrete_syntax_provider.rb', line 9

def initialize(configDirs, logger, config=nil)
  @configDirs = configDirs
  @logger = logger
  @config = config
  @selectedSyntax = nil 
end

Instance Method Details

#selectedSyntaxObject



16
17
18
19
20
21
# File 'lib/concrete/concrete_syntax_provider.rb', line 16

def selectedSyntax
  syn = syntaxes
  storedIdent = @config.andand.loadValue("concrete_syntax") 
  storedSyntax = syn.find{|s| s.ident == storedIdent} if storedIdent
  storedSyntax || @selectedSyntax || syn.first
end

#selectSyntax(ident) ⇒ Object



23
24
25
26
# File 'lib/concrete/concrete_syntax_provider.rb', line 23

def selectSyntax(ident)
  @selectedSyntax = syntaxes.find{|s| s.ident == ident}
  @config.andand.storeValue("concrete_syntax", ident.to_s)
end

#syntaxesObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/concrete/concrete_syntax_provider.rb', line 34

def syntaxes
  result = []
  @configDirs.each do |cd|
    next unless File.exist?(cd)
    Dir.entries(cd).sort.each do |sd|
      next if sd == "." || sd == ".."
      syntaxDir = cd+"/"+sd
      templatesFile = syntaxDir + "/templates.html"
      styleFile = syntaxDir + "/style.css"
      unless File.exist?(templatesFile) || File.exist?(styleFile)
        @logger.warn("Concrete syntax dir without a templates.html or a style.css: #{syntaxDir}")
        next
      end
      s = ConcreteSyntax.new
      s.ident = syntaxDir.gsub("\\","/")
      s.dir = syntaxDir
      s.name = sd.split(/[_\W]/).collect{|w| w.capitalize}.join(" ")
      s.desc = ""
      s.cssStyleFile = styleFile if File.exist?(styleFile)
      s.htmlTemplates = File.read(templatesFile) if File.exist?(templatesFile)
      result << s 
    end
  end
  result
end

#syntaxesAsJsonObject



28
29
30
31
32
# File 'lib/concrete/concrete_syntax_provider.rb', line 28

def syntaxesAsJson
  '{ "syntaxes": [' + syntaxes.collect do |s| 
    '{ "ident": "'+s.ident+'", "name": "'+s.name+'" }'
  end.join(", ") + '], "selected": "'+@selectedSyntax.andand.ident.to_s+'" }'
end