Parent

Object

We need a “valid” method thtat determines if a string is suitable for use in the gem specification.

Public Class Methods

enumerate( config, tag, id = nil, opts = {} ) click to toggle source

Enumerate all the annoations for the given config and tag. This will search for all athe annotations and display them on standard output.

    # File lib/bones/annotation_extractor.rb, line 23
23:   def self.enumerate( config, tag, id = nil, opts = {} )
24:     extractor = new(config, tag, id)
25:     extractor.display(extractor.find, opts)
26:   end
new( config, tag, id) click to toggle source

Creates a new annotation extractor configured to use the config open strcut and to search for the given tag (which can be more than one tag via a regular expression ‘or’ operation — i.e. THIS|THAT|OTHER)

    # File lib/bones/annotation_extractor.rb, line 34
34:   def initialize( config, tag, id) 
35:     @config = config
36:     @tag = tag
37:     @id = @id_rgxp = nil
38: 
39:     unless id.nil? or id.empty?
40:       @id = id
41:       @id_rgxp = Regexp.new(Regexp.escape(id), Regexp::IGNORECASE)
42:     end
43:   end

Public Instance Methods

display( results, opts = {} ) click to toggle source

Print the results of the annotation extraction to the screen. If the :tags option is set to true, then the annotation tag will be displayed.

    # File lib/bones/annotation_extractor.rb, line 89
89:   def display( results, opts = {} )
90:     results.keys.sort.each do |file|
91:       puts "#{file}:"
92:       results[file].each do |note|
93:         puts "  * #{note.to_s(opts)}"
94:       end
95:       puts
96:     end
97:   end
do_helo(helodomain) click to toggle source
    # File lib/bones/smtp_tls.rb, line 55
55:     def do_helo(helodomain)
56:       begin
57:         if @esmtp
58:           ehlo helodomain
59:         else
60:           helo helodomain
61:         end
62:       rescue Net::ProtocolError
63:         if @esmtp
64:           @esmtp = false
65:           @error_occured = false
66:           retry
67:         end
68:         raise
69:       end
70:     end
do_start(helodomain, user, secret, authtype) click to toggle source
    # File lib/bones/smtp_tls.rb, line 16
16:     def do_start(helodomain, user, secret, authtype)
17:       raise IOError, 'SMTP session already started' if @started
18: 
19:       if user or secret
20:         if 3 == self.method(:check_auth_args).arity
21:           check_auth_args(user, secret, authtype)
22:         else
23:           check_auth_args(user, secret)
24:         end
25:       end
26: 
27:       sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
28:       @socket = Net::InternetMessageIO.new(sock)
29:       @socket.read_timeout = 60 #@read_timeout
30:       @socket.debug_output = STDERR #@debug_output
31: 
32:       check_response(critical { recv_response() })
33:       do_helo(helodomain)
34: 
35:       raise 'openssl library not installed' unless defined?(OpenSSL)
36:       starttls
37:       ssl = OpenSSL::SSL::SSLSocket.new(sock)
38:       ssl.sync_close = true
39:       ssl.connect
40:       @socket = Net::InternetMessageIO.new(ssl)
41:       @socket.read_timeout = 60 #@read_timeout
42:       @socket.debug_output = STDERR #@debug_output
43:       do_helo(helodomain)
44: 
45:       authenticate user, secret, authtype if user
46:       @started = true
47:     ensure
48:       unless @started
49:         # authentication failed, cancel connection.
50:           @socket.close if not @started and @socket and not @socket.closed?
51:         @socket = nil
52:       end
53:     end
ensure_in_path( *args ) click to toggle source

Adds the given arguments to the include path if they are not already there

    # File lib/bones/helpers.rb, line 85
85:   def ensure_in_path( *args )
86:     args.each do |path|
87:       path = File.expand_path(path)
88:       $:.unshift(path) if test(dd, path) and not $:.include?(path)
89:     end
90:   end
extract_annotations_from( file, pattern ) click to toggle source

Extract any annotations from the given file using the regular expression pattern provided.

    # File lib/bones/annotation_extractor.rb, line 68
68:   def extract_annotations_from( file, pattern )
69:     lineno = 0
70:     result = File.readlines(file).inject([]) do |list, line|
71:       lineno += 1
72:       next list unless m = pattern.match(line)
73:       next list << Annotation.new(lineno, m[1], m[2]) unless id
74: 
75:       text = m[2]
76:       if text =~ @id_rgxp
77:         text.gsub!(@id_rgxp) {|str| ::Bones::Colors.green(str)} if config.colorize
78:         list << Annotation.new(lineno, m[1], text)
79:       end
80:       list
81:     end
82:     result.empty? ? {} : { file => result }
83:   end
find() click to toggle source

Iterate over all the files in the project and extract annotations from the those files. Returns the results as a hash for display.

    # File lib/bones/annotation_extractor.rb, line 48
48:   def find
49:     results = {}
50:     rgxp = /(#{tag}):?\s*(.*?)(?:\s*(?:-?%>|\*+\/))?$/
51: 
52:     extensions = config.notes.extensions.dup
53:     exclude = if config.notes.exclude.empty? then nil
54:               else Regexp.new(config.notes.exclude.join('|')) end
55: 
56:     config.gem.files.each do |fn|
57:       next if exclude && exclude =~ fn
58:       next unless extensions.include? File.extname(fn)
59:       results.update(extract_annotations_from(fn, rgxp))
60:     end
61: 
62:     results
63:   end
starttls() click to toggle source
    # File lib/bones/smtp_tls.rb, line 72
72:     def starttls
73:       getok('STARTTLS')
74:     end
valid?() click to toggle source
    # File lib/bones/helpers.rb, line 78
78:   def valid?
79:     return !(self.empty? or self == "\0000") if self.respond_to?(:to_str)
80:     return false
81:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.