diff options
| author | Markus Reiter | 2016-08-23 23:36:00 +0200 |
|---|---|---|
| committer | Markus Reiter | 2016-08-23 23:36:17 +0200 |
| commit | 1e1a8bf626b044b5772635f9ac28ce89c0b431db (patch) | |
| tree | 3265b8c1ab310c750913e92718d05d6b87f682f1 | |
| parent | 963337aede12a3af739db8b44dbfd558de64b7af (diff) | |
| download | brew-1e1a8bf626b044b5772635f9ac28ce89c0b431db.tar.bz2 | |
Use version 3.1.0 of vendored `plist`.
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/vendor/plist.rb | 234 | ||||
| -rwxr-xr-x[-rw-r--r--] | Library/Homebrew/vendor/plist/plist.rb | 4 |
3 files changed, 3 insertions, 237 deletions
diff --git a/Library/Homebrew/cask/lib/hbc.rb b/Library/Homebrew/cask/lib/hbc.rb index a9a23f997..29fad59af 100644 --- a/Library/Homebrew/cask/lib/hbc.rb +++ b/Library/Homebrew/cask/lib/hbc.rb @@ -36,7 +36,7 @@ require "hbc/utils" require "hbc/verify" require "hbc/version" -require "vendor/plist" +require "vendor/plist/plist" module Hbc include Hbc::Locations diff --git a/Library/Homebrew/vendor/plist.rb b/Library/Homebrew/vendor/plist.rb deleted file mode 100644 index 9e469a069..000000000 --- a/Library/Homebrew/vendor/plist.rb +++ /dev/null @@ -1,234 +0,0 @@ -# -# = plist -# -# Copyright 2006-2010 Ben Bleything and Patrick May -# Distributed under the MIT License -# - -# Plist parses macOS xml property list files into ruby data structures. -# -# === Load a plist file -# This is the main point of the library: -# -# r = Plist::parse_xml( filename_or_xml ) -module Plist -# Note that I don't use these two elements much: -# -# + Date elements are returned as DateTime objects. -# + Data elements are implemented as Tempfiles -# -# Plist::parse_xml will blow up if it encounters a Date element. -# If you encounter such an error, or if you have a Date element which -# can't be parsed into a Time object, please send your plist file to -# plist@hexane.org so that I can implement the proper support. - def Plist::parse_xml( filename_or_xml ) - listener = Listener.new - #parser = REXML::Parsers::StreamParser.new(File.new(filename), listener) - parser = StreamParser.new(filename_or_xml, listener) - parser.parse - listener.result - end - - class Listener - #include REXML::StreamListener - - attr_accessor :result, :open - - def initialize - @result = nil - @open = Array.new - end - - - def tag_start(name, attributes) - @open.push PTag::mappings[name].new - end - - def text( contents ) - @open.last.text = contents if @open.last - end - - def tag_end(name) - last = @open.pop - if @open.empty? - @result = last.to_ruby - else - @open.last.children.push last - end - end - end - - class StreamParser - def initialize( plist_data_or_file, listener ) - if plist_data_or_file.respond_to? :read - @xml = plist_data_or_file.read - elsif File.exists? plist_data_or_file - @xml = File.read( plist_data_or_file ) - else - @xml = plist_data_or_file - end - - trim_to_xml_start! - - @listener = listener - end - - def trim_to_xml_start! - _, xml_tag, rest = @xml.partition(/^<\?xml/) - @xml = [xml_tag, rest].join - end - - TEXT = /([^<]+)/ - XMLDECL_PATTERN = /<\?xml\s+(.*?)\?>*/um - DOCTYPE_PATTERN = /\s*<!DOCTYPE\s+(.*?)(\[|>)/um - COMMENT_START = /\A<!--/u - COMMENT_END = /.*?-->/um - - - def parse - plist_tags = PTag::mappings.keys.join('|') - start_tag = /<(#{plist_tags})([^>]*)>/i - end_tag = /<\/(#{plist_tags})[^>]*>/i - - require 'strscan' - - @scanner = StringScanner.new( @xml ) - until @scanner.eos? - if @scanner.scan(COMMENT_START) - @scanner.scan(COMMENT_END) - elsif @scanner.scan(XMLDECL_PATTERN) - elsif @scanner.scan(DOCTYPE_PATTERN) - elsif @scanner.scan(start_tag) - @listener.tag_start(@scanner[1], nil) - if (@scanner[2] =~ /\/$/) - @listener.tag_end(@scanner[1]) - end - elsif @scanner.scan(TEXT) - @listener.text(@scanner[1]) - elsif @scanner.scan(end_tag) - @listener.tag_end(@scanner[1]) - else - raise ParseError.new("Unimplemented element #{@xml}") - end - end - end - end - - class PTag - @@mappings = { } - def PTag::mappings - @@mappings - end - - def PTag::inherited( sub_class ) - key = sub_class.to_s.downcase - key.gsub!(/^plist::/, '' ) - key.gsub!(/^p/, '') unless key == "plist" - - @@mappings[key] = sub_class - end - - attr_accessor :text, :children - def initialize - @children = Array.new - end - - def to_ruby - raise ParseError.new("Unimplemented: " + self.class.to_s + "#to_ruby on #{self.inspect}") - end - end - - class PList < PTag - def to_ruby - children.first.to_ruby if children.first - end - end - - class PDict < PTag - def to_ruby - dict = Hash.new - key = nil - - children.each do |c| - if key.nil? - key = c.to_ruby - else - dict[key] = c.to_ruby - key = nil - end - end - - dict - end - end - - require 'cgi' - class PKey < PTag - def to_ruby - CGI::unescapeHTML(text || '') - end - end - - class PString < PTag - def to_ruby - CGI::unescapeHTML(text || '') - end - end - - class PArray < PTag - def to_ruby - children.collect do |c| - c.to_ruby - end - end - end - - class PInteger < PTag - def to_ruby - text.to_i - end - end - - class PTrue < PTag - def to_ruby - true - end - end - - class PFalse < PTag - def to_ruby - false - end - end - - class PReal < PTag - def to_ruby - text.to_f - end - end - - require 'date' - class PDate < PTag - def to_ruby - DateTime.parse(text) - end - end - - require 'base64' - class PData < PTag - def to_ruby - data = Base64.decode64(text.gsub(/\s+/, '')) - - begin - return Marshal.load(data) - rescue Exception => e - io = StringIO.new - io.write data - io.rewind - return io - end - end - end - - class ParseError < RuntimeError; end -end diff --git a/Library/Homebrew/vendor/plist/plist.rb b/Library/Homebrew/vendor/plist/plist.rb index 71f27145f..0b828afc6 100644..100755 --- a/Library/Homebrew/vendor/plist/plist.rb +++ b/Library/Homebrew/vendor/plist/plist.rb @@ -13,8 +13,8 @@ require 'base64' require 'cgi' require 'stringio' -require 'plist/generator' -require 'plist/parser' +require_relative 'plist/generator' +require_relative 'plist/parser' module Plist VERSION = '3.1.0' |
