Class: TinyMCE::Rails::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/tinymce/rails/configuration.rb

Defined Under Namespace

Classes: Function

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Configuration

Returns a new instance of Configuration.



21
22
23
# File 'lib/tinymce/rails/configuration.rb', line 21

def initialize(options)
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



19
20
21
# File 'lib/tinymce/rails/configuration.rb', line 19

def options
  @options
end

Class Method Details

.assetsObject



93
94
95
# File 'lib/tinymce/rails/configuration.rb', line 93

def self.assets
  Rails.application.assets
end

.available_languagesObject

Searches asset paths for TinyMCE language files.



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/tinymce/rails/configuration.rb', line 73

def self.available_languages
  assets.paths.map { |path|
    # Find all assets within tinymce/langs
    entries = assets.entries(File.join(path, "tinymce/langs"))
    entries.map { |entry|
      if assets.respond_to?(:attributes_for)
        assets.attributes_for(File.join(path, entry))
      else
        assets.find_asset(File.join("tinymce/langs", entry))
      end
    }.select { |asset|
      # Select only JavaScript files
      asset.logical_path =~ /\.js$/
    }.map { |asset|
      # Strip path and extension
      asset.logical_path.sub(/^tinymce\/langs\//, "").sub(/\.js$/, "")
    }
  }.flatten.uniq
end

.default_languageObject

Default language falls back to English if current locale is not available.



68
69
70
# File 'lib/tinymce/rails/configuration.rb', line 68

def self.default_language
  available_languages.include?(I18n.locale.to_s) ? I18n.locale.to_s : "en"
end

.defaultsObject



11
12
13
14
15
16
17
# File 'lib/tinymce/rails/configuration.rb', line 11

def self.defaults
  {
    "mode"            => "specific_textareas",
    "editor_selector" => "tinymce",
    "theme"           => "advanced"
  }
end

.new_with_defaults(options = {}) ⇒ Object



25
26
27
28
29
# File 'lib/tinymce/rails/configuration.rb', line 25

def self.new_with_defaults(options={})
  config = new(defaults)
  config = config.merge(options) if options
  config
end

Instance Method Details

#merge(options) ⇒ Object



63
64
65
# File 'lib/tinymce/rails/configuration.rb', line 63

def merge(options)
  self.class.new(self.options.merge(options))
end

#options_for_tinymceObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/tinymce/rails/configuration.rb', line 31

def options_for_tinymce
  result = {}
  
  options.each do |key, value|
    if value.is_a?(Array) && value.all? { |v| v.is_a?(String) }
      result[key] = value.join(",")
    elsif value.to_s.starts_with?("function(")
      result[key] = Function.new(value)
    else
      result[key] = value
    end
  end
  
  result["language"] ||= self.class.default_language
  
  result
end

#to_javascriptObject



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/tinymce/rails/configuration.rb', line 49

def to_javascript
  pairs = options_for_tinymce.inject([]) do |result, (k, v)|
    if v.respond_to?(:to_javascript)
      v = v.to_javascript
    elsif v.respond_to?(:to_json)
      v = v.to_json
    end
    
    result << [k, v].join(": ")
  end
  
  "{\n#{pairs.join(",\n")}\n}"
end