Sha256: 8df64302846c425bda776c7979d76cc010570f537ab9ada4dd656d15162493cc

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

module Concrete

class ConcreteSyntaxProvider

  class ConcreteSyntax
    attr_accessor :ident, :dir, :name, :desc, :htmlTemplates, :cssStyleFile
  end

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

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

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

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

  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
   
end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
concrete-0.2.0 lib/concrete/concrete_syntax_provider.rb