Sha256: 7af85ecd39b3ab8b9c10d81249e8bd53052e646e51b07c5c8d87816b83eff96c
Contents?: true
Size: 1.35 KB
Versions: 13
Compression:
Stored size: 1.35 KB
Contents
# frozen_string_literal: true require "rexml/document" module SublimeTextKit module Snippets class Snippet ELEMENT_TRANSLATIONS = { "content" => :content, "tabTrigger" => :trigger, "description" => :description, "scope" => :scope }.freeze ALLOWED_METHODS = ELEMENT_TRANSLATIONS.values.freeze def initialize document @document = document assign_elements end private attr_reader :document, :content_element, :trigger_element, :description_element, :scope_element def assign_elements root_element.elements.each do |element| name = element.name fail StandardError, "Unknown element: #{element}." unless ELEMENT_TRANSLATIONS.key? name instance_variable_set "@#{ELEMENT_TRANSLATIONS[name]}_element", element end end def root_element document.root || REXML::Element.new end def method_missing name, *arguments, &block return super unless respond_to_missing? name String((__send__("#{name}_element") || REXML::Element.new).text) end # :reek:BooleanParameter def respond_to_missing? name, include_private = false ALLOWED_METHODS.include?(name) || super end end end end
Version data entries
13 entries across 13 versions & 1 rubygems