Sha256: 9823c71f772e6d572998e5ed353252eafa49677680dbc63df23a91aea81175cc
Contents?: true
Size: 1.51 KB
Versions: 1
Compression:
Stored size: 1.51 KB
Contents
require 'plist' module Coloration module Readers module TextMateThemeReader class InvalidThemeError < RuntimeError; end def parse_input begin tm_theme = Plist.parse_xml(input.gsub("ustring", "string")) rescue raise InvalidThemeError end raise InvalidThemeError if tm_theme.nil? self.name = tm_theme["name"] settings = tm_theme["settings"] self.ui = settings.delete_at(0)["settings"] bg = Color::RGB.from_html(ui["background"][0..6]) ui.each do |key, value| if value.start_with?("#") ui[key] = Color::RGBA.from_html(value, bg) end end ui["background"] = bg items = {} settings.each do |rule| selectors = rule["scope"] style = rule["settings"] if font_style = style.delete("fontStyle") if font_style.include?("bold") style[:bold] = true end if font_style.include?("italic") style[:italic] = true end if font_style.include?("underline") style[:underline] = true end end style = Style.new(style, bg) unless selectors.blank? || style.blank? selectors.split(",").each do |selector| items[selector.strip] = style end end end self.items = ItemsLookup.new(items) end end # TextMateThemeReader end # Readers end # Coloration
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
coloration-0.4.0 | lib/coloration/readers/textmate_theme_reader.rb |