cocoadex 1.0.1 → 1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/cocoadex CHANGED
@@ -15,52 +15,29 @@ main do |arg|
15
15
  logger.error_level = Logger::DEBUG
16
16
  end
17
17
 
18
- if options[:docset] and path = File.expand_path(options[:docset].first)
18
+ if options[:load_docset] and path = File.expand_path(options[:load_docset].first)
19
19
  Parser.parse(path)
20
20
  end
21
21
 
22
-
23
22
  if options[:search] and text = options[:search].first
24
23
  if Keyword.loaded?
25
24
  logger.debug "Loading index..."
26
25
  Keyword.read
27
- search(text)
26
+ Cocoadex.search(text, options[:first])
28
27
  else
29
28
  puts "No DocSets loaded"
30
29
  end
31
30
  end
32
31
  end
33
32
 
34
- def search term
35
- if term and not term.strip.empty?
36
- objects = Keyword.find(term.strip)
37
- if objects.size == 0
38
- puts "No matches found"
39
- elsif objects.size == 1
40
- objects.first.print
41
- else
42
- objects.each_with_index do |obj, index|
43
- puts "#{index} #{obj}"
44
- end
45
- puts "Select:"
46
- which = gets
47
- begin
48
- index = [[which.to_i,0].max,objects.size - 1].min
49
- objects[index].print
50
- rescue Exception => e
51
- puts ":("
52
- end
53
- end
54
- end
55
- end
56
-
57
33
  version Cocoadex::VERSION
58
34
  description 'A Class Reference Utility for Cocoa APIs'
59
35
 
60
36
  on("--verbose","Be verbose")
37
+ on("--first","Load first result when multiple matches exist")
61
38
 
62
- on("-d DOCSET","--docset","DocSet",/^(.*)$/)
63
- on("-s QUERY","--search","Search",/^(.*)$/)
39
+ on("-d DOCSET","--load-docset","Load a DocSet into the datastore",/^(.*)$/)
40
+ on("-s QUERY","--search","Search the index",/^(.*)$/)
64
41
 
65
42
  # todo: support --platform, --platform-version, --language, --first, --force
66
43
 
@@ -1,43 +1,82 @@
1
1
 
2
+ require 'fileutils'
3
+
2
4
  module Cocoadex
3
5
  class Keyword
4
6
  attr_reader :term, :type, :docset, :url
5
7
  attr_accessor :fk, :id
6
8
 
7
- DATA_PATH = File.join(File.dirname(__FILE__),"..","..","data","store.yaml")
9
+ # Cache storage location
10
+ DATA_PATH = File.expand_path("~/.cocoadex/data/store.blob")
11
+
12
+ SEPARATOR = "--__--"
13
+ CLASS_METHOD_DELIM = '+'
14
+ INST_METHOD_DELIM = '-'
15
+ CLASS_PROP_DELIM = '.'
16
+ SCOPE_CHARS = [CLASS_PROP_DELIM,CLASS_METHOD_DELIM,INST_METHOD_DELIM]
8
17
 
9
18
  def self.datastore
10
19
  @store ||= []
11
20
  end
12
21
 
22
+ # Search the cache for matching text
13
23
  def self.find text
14
- keys = datastore.select {|k| k.term.start_with? text }
15
- if key = keys.detect {|k| k.term == text}
16
- keys = [key]
24
+ if (text.split(//u) & SCOPE_CHARS).size == 1
25
+ scope = SCOPE_CHARS.detect {|c| text.include? c }
26
+ class_name, term = text.split(scope)
27
+ find_with_scope scope, class_name, term
28
+ else
29
+ keys = datastore.select {|k| k.term.start_with? text }
30
+ if key = keys.detect {|k| k.term == text}
31
+ keys = [key]
32
+ end
33
+ untokenize(keys)
17
34
  end
18
- untokenize(keys)
19
35
  end
20
36
 
37
+ def self.find_with_scope scope, class_name, term
38
+ if class_key = datastore.detect {|k| k.term == class_name }
39
+ klass = untokenize([class_key]).first
40
+ case scope
41
+ when CLASS_PROP_DELIM
42
+ (klass.methods + klass.properties).select {|m| m.name.start_with? term}
43
+ when CLASS_METHOD_DELIM
44
+ klass.class_methods.select {|m| m.name.start_with? term}
45
+ when INST_METHOD_DELIM
46
+ klass.instance_methods.select {|m| m.name.start_with? term}
47
+ end
48
+ else
49
+ []
50
+ end
51
+ end
52
+
53
+ # Are any docsets loaded into the cache?
21
54
  def self.loaded?
22
55
  File.exists? DATA_PATH
23
56
  end
24
57
 
58
+ # Read a serialized cache file into an Array
25
59
  def self.read
26
- $/="\n\n"
60
+ $/=SEPARATOR
27
61
  File.open(DATA_PATH, "r").each do |object|
28
- datastore << YAML::load(object)
62
+ datastore << Marshal::load(object)
29
63
  end
30
64
  end
31
65
 
66
+ # Write a cache Array as a serialized file
32
67
  def self.write
68
+ unless File.exists? File.dirname(DATA_PATH)
69
+ FileUtils.mkdir_p File.dirname(DATA_PATH)
70
+ end
33
71
  File.open(DATA_PATH, "w") do |file|
34
72
  datastore.each do |keyword|
35
- file.puts(YAML.dump(keyword))
36
- file.puts
73
+ file.print(Marshal.dump(keyword))
74
+ file.print SEPARATOR
37
75
  end
38
76
  end
39
77
  end
40
78
 
79
+ # Create Cocoadex model objects for Keyword references
41
80
  def self.untokenize keys
42
81
  keys.map do |key|
43
82
  case key.type
@@ -48,18 +87,16 @@ module Cocoadex
48
87
  klass = Cocoadex::Class.new(class_key.url)
49
88
  case key.type
50
89
  when :method
51
- entity = klass.methods.detect {|m| m.name == key.term}
90
+ klass.methods.detect {|m| m.name == key.term}
52
91
  when :property
53
- entity = klass.properties.detect {|m| m.name == key.term}
92
+ klass.properties.detect {|m| m.name == key.term}
54
93
  end
55
-
56
- entity.class_name = klass.name
57
- entity
58
94
  end
59
95
  end
60
96
  end
61
97
  end
62
98
 
99
+ # Find all searchable keywords in a class and add to cache
63
100
  def self.tokenize_class docset, path, id
64
101
  klass = Cocoadex::Class.new(path)
65
102
  class_key = Keyword.new(klass.name, :class, docset, path)
@@ -2,8 +2,11 @@
2
2
  require 'set'
3
3
 
4
4
  module Cocoadex
5
+ # A model of a Cocoa API class or protocol
5
6
  class Class < Entity
6
- attr_reader :name, :description, :overview
7
+ TEMPLATE=Cocoadex::Templates::CLASS_DESCRIPTION
8
+
9
+ attr_reader :description, :overview
7
10
 
8
11
  def properties
9
12
  @properties ||=[]
@@ -17,45 +20,31 @@ module Cocoadex
17
20
  @methods ||= ::Set.new
18
21
  end
19
22
 
20
- def parents
21
- @parents ||= []
23
+ def class_methods
24
+ methods.select{|m| m.scope == :class }
22
25
  end
23
26
 
24
- def to_s
25
- "Class #{name}"
27
+ def instance_methods
28
+ methods.select{|m| m.scope == :instance }
26
29
  end
27
30
 
28
- def print
29
- puts <<-INFO
30
- Class: #{name}
31
-
32
- #{description}
33
-
34
- Inherits From: #{parents.join(' > ')}
35
-
36
- Overview:
37
-
38
- #{overview}
31
+ def parents
32
+ @parents ||= []
33
+ end
39
34
 
40
- Properties:
35
+ def type
36
+ "Class"
37
+ end
41
38
 
42
- INFO
43
- properties.each do |prop|
44
- prop.print
45
- end
46
- puts <<-INFO
47
- Methods:
48
- INFO
49
- methods.each do |m|
50
- m.print
51
- end
39
+ def origin
40
+ parents.join(' > ')
52
41
  end
53
42
 
54
43
  def parse doc
55
44
  @name = doc.css('body a').first['title']
56
45
  @description = doc.css('meta#description').first['content']
57
46
  # @overview = doc.css(".zClassDescription p.abstract").first.text
58
- @overview = doc.css(".zClassDescription").first.text.sub("Overview","")
47
+ @overview = doc.css(".zClassDescription").first.children.map {|n| n.text.sub("Overview","") }
59
48
  @parents = doc.css("div.zSharedSpecBoxHeadList").first.css('a').map {|node| node.text}
60
49
 
61
50
  parse_properties(doc)
@@ -66,16 +55,15 @@ module Cocoadex
66
55
  def parse_methods doc
67
56
  [:class, :instance].each do |selector|
68
57
  nodes = doc.css("div.#{selector}Method")
69
- # logger.debug(nodes.inspect)
70
58
  unless nodes.empty?
71
- methods.merge(nodes.map {|n| Method.new(selector, n)})
59
+ methods.merge(nodes.map {|n| Method.new(self, selector, n)})
72
60
  end
73
61
  end
74
62
  end
75
63
 
76
64
  def parse_properties doc
77
65
  @properties = doc.css("div.propertyObjC").map do |prop|
78
- Property.new(prop)
66
+ Property.new(self, prop)
79
67
  end
80
68
  end
81
69
 
@@ -0,0 +1,31 @@
1
+
2
+ module Cocoadex
3
+ # A searchable element stored in the cache
4
+ class Element
5
+ include Comparable
6
+ include Bri::Templates::Helpers
7
+
8
+ attr_reader :name
9
+
10
+ def to_s
11
+ name
12
+ end
13
+
14
+ def print
15
+ template = self.class.const_get(:TEMPLATE)
16
+ ERB.new(template, nil, '<>').result(binding)
17
+ end
18
+
19
+ def <=> other
20
+ name <=> other.name if other.respond_to? :name
21
+ end
22
+
23
+ def origin
24
+ raise "#{self.class}#origin is not defined"
25
+ end
26
+
27
+ def type
28
+ raise "#{self.class}#type is not defined"
29
+ end
30
+ end
31
+ end
@@ -1,6 +1,8 @@
1
1
 
2
2
  module Cocoadex
3
- class Entity
3
+ # A top level element, roughly equivalent to one
4
+ # page of documentation
5
+ class Entity < Element
4
6
 
5
7
  def initialize path
6
8
  text = clean(IO.read(path))
@@ -8,10 +10,8 @@ module Cocoadex
8
10
  parse(document)
9
11
  end
10
12
 
11
- def print
12
- raise "print() not defined for #{self.class}"
13
- end
14
-
13
+ # Remove leading and trailing whitespace from lines, while
14
+ # stripping HTML tags
15
15
  def clean text
16
16
  text.gsub(/(\n|\t|\r)/, ' ').gsub(/>\s*</, '><').squeeze(' ')
17
17
  end
@@ -1,22 +1,29 @@
1
1
 
2
2
  module Cocoadex
3
3
  class Class < Entity
4
- class Method
5
- attr_reader :name, :abstract, :declaration, :scope,
6
- :discussion, :declared_in, :availability, :parameters,
7
- :return_value
4
+ # A model of a method in a Cocoa class
5
+ class Method < Element
6
+ TEMPLATE=Cocoadex::Templates::METHOD_DESCRIPTION
8
7
 
9
- attr_accessor :class_name
8
+ attr_reader :abstract, :declaration, :discussion,
9
+ :declared_in, :availability, :parameters,
10
+ :return_value, :scope, :parent
10
11
 
11
12
  class Parameter
13
+ include Comparable
14
+
12
15
  attr_reader :name, :description
13
16
 
14
17
  def initialize name, description
15
18
  @name, @description = name, description
16
19
  end
17
20
 
18
- def print
19
- puts "#{name} - #{description}"
21
+ def to_s
22
+ "#{name} - #{description}"
23
+ end
24
+
25
+ def <=> other
26
+ name <=> other.name if other.respond_to? :name
20
27
  end
21
28
  end
22
29
 
@@ -24,9 +31,10 @@ module Cocoadex
24
31
  @parameters ||= []
25
32
  end
26
33
 
27
- def initialize type, node
28
- @type = type
29
- @name = node.css("h3.#{type}Method").first.text
34
+ def initialize parent_class, type, node
35
+ @parent = parent_class
36
+ @scope = type
37
+ @name = node.css("h3.#{type}Method").first.text
30
38
  logger.debug("parsing #{@type} method #{@name}")
31
39
  @abstract = node.css(".abstract").first.text
32
40
  @declaration = node.css(".declaration").first.text
@@ -62,24 +70,12 @@ module Cocoadex
62
70
  end
63
71
  end
64
72
 
65
- def to_s
66
- "Method #{name}"
67
- end
68
-
69
- def print
70
- puts <<-PRINT
71
- Declared in: #{declared_in}
72
-
73
- #{declaration}
74
- #{print_parameters}
75
- Returns: #{return_value}
76
- #{abstract}
77
- #{availability}
78
- PRINT
73
+ def type
74
+ "#{scope.to_s.capitalize} Method"
79
75
  end
80
76
 
81
- def print_parameters
82
- parameters.map {|pm| pm.print}.join("\n ") if parameters
77
+ def origin
78
+ parent.to_s
83
79
  end
84
80
  end
85
81
  end
@@ -1,12 +1,15 @@
1
1
 
2
2
  module Cocoadex
3
- class Property
4
- attr_reader :name, :abstract, :declaration, :discussion, :availability
3
+ # A Cocoa API class property
4
+ class Property < Element
5
+ TEMPLATE=Cocoadex::Templates::PROPERTY_DESCRIPTION
5
6
 
6
- attr_accessor :class_name
7
+ attr_reader :abstract, :declaration, :discussion,
8
+ :availability, :parent
7
9
 
8
- def initialize node
9
- @name = node.css("h3.method_property").first.text
10
+ def initialize parent_class, node
11
+ @parent = parent_class
12
+ @name = node.css("h3.method_property").first.text
10
13
  logger.debug("Adding property: #{@name}")
11
14
 
12
15
  if abs = node.css(".abstract") and abs.length > 0
@@ -26,19 +29,12 @@ module Cocoadex
26
29
  end
27
30
  end
28
31
 
29
- def to_s
30
- "Property #{name}"
32
+ def origin
33
+ parent.to_s
31
34
  end
32
35
 
33
- def print
34
- puts <<-PRINT
35
- Declared in: #{class_name || ''}
36
-
37
- #{name}
38
- #{abstract}
39
- #{availability}
40
-
41
- PRINT
36
+ def type
37
+ "Property"
42
38
  end
43
39
  end
44
40
  end
@@ -0,0 +1,114 @@
1
+ module Cocoadex
2
+ module Templates
3
+ MULTIPLE_CHOICES =<<-EOT
4
+ <%= Bri::Templates::Helpers.hrule("Multiple choices:") %>
5
+
6
+ <%= Bri::Renderer.wrap_list( objects.sort ) %>
7
+
8
+ EOT
9
+
10
+ CLASS_DESCRIPTION =<<-EOT
11
+
12
+ <%= hrule( type + ": " + name ) %>
13
+ <%= print_origin( origin ) %>
14
+
15
+ <% if description.empty? %>
16
+ (no description...)
17
+ <% else %>
18
+ <%= '\n' + description %>
19
+ <% end %>
20
+ <% unless overview.empty? %>
21
+ <%= hrule %>
22
+
23
+ <%= section_header( "Overview:" ) %>
24
+ <%= Bri::Renderer.wrap_row(overview.join('\n\n'), Cocoadex.width) %>
25
+ <% end %>
26
+
27
+ <%= hrule %>
28
+
29
+ <% unless class_methods.empty? %>
30
+ <%= section_header( "Class methods:" ) %>
31
+ <%= Bri::Renderer.wrap_list( class_methods.sort ) %>
32
+
33
+
34
+ <% end %>
35
+ <% unless instance_methods.empty? %>
36
+ <%= section_header( "Instance methods:" ) %>
37
+ <%= Bri::Renderer.wrap_list( instance_methods.sort ) %>
38
+
39
+
40
+ <% end %>
41
+ <% unless properties.empty? %>
42
+ <%= section_header( "Properties:" ) %>
43
+ <%= Bri::Renderer.wrap_list( properties.sort ) %>
44
+
45
+
46
+ <% end %>
47
+ EOT
48
+
49
+ METHOD_DESCRIPTION =<<-EOT
50
+
51
+ <%= hrule( name ) %>
52
+ <%= print_origin( origin ) %>
53
+
54
+
55
+ <%= Cocoadex.trailing_indent(Bri::Renderer.wrap_row(declaration, Cocoadex.width), 2, 6) %>
56
+
57
+ <% if return_value %>
58
+
59
+ <%= 'Returns: ' + return_value %>
60
+ <% end %>
61
+
62
+ <%= hrule %>
63
+ <% if abstract.empty? %>
64
+ (no description...)
65
+ <% else %>
66
+ <%= Bri::Renderer.wrap_row(abstract, Cocoadex.width) %>
67
+ <% end %>
68
+
69
+ <% unless parameters.empty? %>
70
+ <%= section_header( "Parameters:" ) %>
71
+ <% parameters.each do |param| %>
72
+
73
+ <%= h3(Cocoadex.indent(param.name, 2)).strip %>
74
+ <% Bri::Renderer.wrap_row(param.description, Cocoadex.width).split('\n').each do |line| %>
75
+ <%= Cocoadex.indent(line, 4) %>
76
+ <% end %>
77
+ <% end %>
78
+
79
+
80
+ <% end %>
81
+ <%= availability %>
82
+
83
+ EOT
84
+
85
+ PROPERTY_DESCRIPTION =<<-EOT
86
+
87
+ <%= hrule( name ) %>
88
+ <%= print_origin( origin ) %>
89
+
90
+
91
+ <%= Bri::Renderer.wrap_row(declaration, Cocoadex.width) %>
92
+ <%= hrule %>
93
+ <% if abstract.empty? %>
94
+ (no description...)
95
+ <% else %>
96
+ <%= Bri::Renderer.wrap_row(abstract, Cocoadex.width) %>
97
+ <% end %>
98
+
99
+ <%= availability %>
100
+
101
+ EOT
102
+ end
103
+ end
104
+
105
+ module Bri
106
+ module Templates
107
+ module Helpers
108
+ def h3 text
109
+ Term::ANSIColor::blue + text + Term::ANSIColor::reset + "\n"
110
+ end
111
+ module_function :h3
112
+ end
113
+ end
114
+ end
@@ -1,3 +1,3 @@
1
1
  module Cocoadex
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1"
3
3
  end
data/lib/cocoadex.rb CHANGED
@@ -1,6 +1,10 @@
1
1
 
2
+ require 'erb'
3
+ require 'bri'
2
4
  require 'cocoadex/version'
5
+ require 'cocoadex/templates'
3
6
  require 'cocoadex/models/docset'
7
+ require 'cocoadex/models/element'
4
8
  require 'cocoadex/models/entity'
5
9
  require 'cocoadex/models/method'
6
10
  require 'cocoadex/models/property'
@@ -9,7 +13,48 @@ require 'cocoadex/parser'
9
13
  require 'cocoadex/keyword'
10
14
  require 'ext/nil'
11
15
  require 'nokogiri'
16
+ require 'term/ansicolor'
12
17
 
13
18
  module Cocoadex
14
19
 
20
+ DEFAULT_WIDTH = 72
21
+
22
+ # output documentation text for a given search term
23
+ def self.search term, load_first=false
24
+ term = term.strip
25
+ unless term.empty?
26
+ objects = Keyword.find(term)
27
+ if objects.size == 0
28
+ puts "No matches found"
29
+ elsif objects.size == 1 or load_first
30
+ puts objects.first.print
31
+ else
32
+ template = Cocoadex::Templates::MULTIPLE_CHOICES
33
+ puts ERB.new(template, nil, '<>').result(binding)
34
+ end
35
+ end
36
+ end
37
+
38
+ # The maximum line width
39
+ def self.width
40
+ @width || DEFAULT_WIDTH
41
+ end
42
+
43
+ def self.width= width
44
+ @width = width
45
+ end
46
+
47
+ # add leading whitespace to lines
48
+ def self.indent text, level=2
49
+ text.split("\n").collect {|row| "#{' '*level}#{row}"}.join("\n" )
50
+ end
51
+
52
+ # add leading whitespace to lines, increasing indent after
53
+ # the first line
54
+ def self.trailing_indent text, base_level=2, inside_level=4
55
+ text.split("\n").each_with_index.collect do |row, index|
56
+ level = index == 0 ? base_level : inside_level
57
+ "#{' '*level}#{row}"
58
+ end.join("\n")
59
+ end
15
60
  end
data/lib/ext/nil.rb CHANGED
@@ -12,6 +12,10 @@ class NilClass
12
12
  nil
13
13
  end
14
14
 
15
+ def children
16
+ []
17
+ end
18
+
15
19
  def next
16
20
  nil
17
21
  end
data/readme.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # THE COCOADEX
2
2
 
3
- Spartan documentation lookup for Cocoa APIs
3
+ Documentation lookup for Cocoa APIs, in the spirit of RI
4
4
 
5
+ Cocoadex parses Cocoa documentation files and creates a keyword index. Queries can then be run against the index for fast documentation lookup.
5
6
 
6
7
  ## Installation
7
8
 
@@ -10,25 +11,77 @@ Spartan documentation lookup for Cocoa APIs
10
11
  ## Usage
11
12
 
12
13
  - **View Options:** `cocoadex --help`
13
- - **Loading a DocSet:** `cocoadex --docset [path]` (Try `~/Library/Developer/DocSets/[docset name]`)
14
- - **Look up:** `cocoadex --search [query]`
15
- - Valid search terms are Class, method, and property names
16
- - Example:
17
14
 
18
- $ cocoadex -s tableView:didSelectRow
19
- Declared in: UITableView.h
15
+ - **Loading a DocSet:** `cocoadex --load-docset [path]` (Try `~/Library/Developer/DocSets/[docset name]`)
20
16
 
21
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
22
- tableView - A table-view object informing the delegate about the new row selection.
23
- indexPath - An index path locating the new selected row in tableView.
24
- Returns:
25
- Tells the delegate that the specified row is now selected.
26
- Available in iOS 2.0 and later.
17
+ - **Look up Documentation:** `cocoadex --search [query]`
18
+ - Valid search terms are Class, method, and property names. Search scope can also be focused using delimiters, such as `ClassName-method` to find instance methods, `Class+method` to find class methods, or `Class.method` to find any matching method or property in `Class`.
27
19
 
28
20
 
29
- ## Todo
21
+ *Property Lookup Example*
30
22
 
31
- - Improve UX: Some tasteful usage of text formatting wouldn't hurt
32
- - Support `--first`, for returning the first result of multiple matches
33
- - Support auto-loading DocSets from common locations
34
- - Persist object model/datastore using AR
23
+ <pre>
24
+ $ cocoadex -s tableView
25
+
26
+ -------------------------------------------------------------- tableView
27
+ (UITableViewController)
28
+
29
+ @property(nonatomic, retain) UITableView *tableView
30
+ ------------------------------------------------------------------------
31
+ Returns the table view managed by the controller object.
32
+
33
+ Available in iOS 2.0 and later.
34
+ </pre>
35
+
36
+
37
+ *Method Lookup Example*
38
+
39
+ <pre>
40
+ $ cocoadex -s tableView:viewForFoo
41
+
42
+ -------------------------------------- tableView:viewForFooterInSection:
43
+ (UITableViewDelegate)
44
+
45
+ - (UIView *)tableView:(UITableView *)tableView
46
+ viewForFooterInSection:(NSInteger)section
47
+
48
+ Returns: A view object to be displayed in the footer of section .
49
+ ------------------------------------------------------------------------
50
+ Asks the delegate for a view object to display in the footer of the
51
+ specified section of the table view.
52
+
53
+ Parameters:
54
+
55
+ tableView
56
+ The table-view object asking for the view object.
57
+ section
58
+ An index number identifying a section of tableView .
59
+
60
+ Available in iOS 2.0 and later.
61
+ </pre>
62
+
63
+ *Class Lookup Example (Clipped for brevity)*
64
+
65
+ <pre>
66
+ $ cocoadex -s UILabel
67
+
68
+ --------------------------------------------------------- Class: UILabel
69
+ (UIView > UIResponder > NSObject)
70
+
71
+ Describes a control for displaying static text.
72
+ ------------------------------------------------------------------------
73
+
74
+ Overview:
75
+
76
+ (...)
77
+
78
+ Instance Methods:
79
+ drawTextInRect:, textRectForBounds:limitedToNumberOfLines:
80
+
81
+ Properties:
82
+ adjustsFontSizeToFitWidth, baselineAdjustment, enabled, font,
83
+ highlighted, highlightedTextColor, lineBreakMode, minimumFontSize,
84
+ numberOfLines, shadowColor, shadowOffset, text, textAlignment,
85
+ textColor, userInteractionEnabled
86
+
87
+ </pre>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoadex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: '1.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,8 +13,8 @@ date: 2012-07-19 00:00:00.000000000 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: bacon
17
- requirement: &15766660 !ruby/object:Gem::Requirement
16
+ name: rdoc
17
+ requirement: &21891660 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,54 +22,54 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *15766660
25
+ version_requirements: *21891660
26
26
  - !ruby/object:Gem::Dependency
27
- name: rdoc
28
- requirement: &15766100 !ruby/object:Gem::Requirement
27
+ name: rake
28
+ requirement: &21891100 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
- - - ! '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.9.2
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *15766100
36
+ version_requirements: *21891100
37
37
  - !ruby/object:Gem::Dependency
38
- name: aruba
39
- requirement: &15765680 !ruby/object:Gem::Requirement
38
+ name: methadone
39
+ requirement: &21890500 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
- - - ! '>='
42
+ - - ~>
43
43
  - !ruby/object:Gem::Version
44
- version: '0'
45
- type: :development
44
+ version: 1.2.1
45
+ type: :runtime
46
46
  prerelease: false
47
- version_requirements: *15765680
47
+ version_requirements: *21890500
48
48
  - !ruby/object:Gem::Dependency
49
- name: rake
50
- requirement: &15750620 !ruby/object:Gem::Requirement
49
+ name: term-ansicolor
50
+ requirement: &21890060 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
- - - ~>
53
+ - - ! '>='
54
54
  - !ruby/object:Gem::Version
55
- version: 0.9.2
56
- type: :development
55
+ version: '0'
56
+ type: :runtime
57
57
  prerelease: false
58
- version_requirements: *15750620
58
+ version_requirements: *21890060
59
59
  - !ruby/object:Gem::Dependency
60
- name: methadone
61
- requirement: &15750020 !ruby/object:Gem::Requirement
60
+ name: bri
61
+ requirement: &21889520 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
- - - ~>
64
+ - - ! '>='
65
65
  - !ruby/object:Gem::Version
66
- version: 1.2.1
66
+ version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *15750020
69
+ version_requirements: *21889520
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: nokogiri
72
- requirement: &15749580 !ruby/object:Gem::Requirement
72
+ requirement: &21889020 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,32 +77,33 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *15749580
81
- description: A reference utility for Cocoa APIs
80
+ version_requirements: *21889020
81
+ description: A command-line class reference utility Cocoa APIs
82
82
  email:
83
83
  - iskanamagus@gmail.com
84
84
  executables:
85
85
  - cocoadex
86
86
  extensions: []
87
- extra_rdoc_files: []
87
+ extra_rdoc_files:
88
+ - readme.md
88
89
  files:
89
90
  - Gemfile
90
91
  - LICENSE
91
92
  - LICENSE.txt
93
+ - readme.md
92
94
  - bin/cocoadex
93
- - cocoadex.gemspec
94
- - data/_store
95
95
  - lib/cocoadex.rb
96
96
  - lib/cocoadex/keyword.rb
97
+ - lib/cocoadex/parser.rb
98
+ - lib/cocoadex/templates.rb
99
+ - lib/cocoadex/version.rb
97
100
  - lib/cocoadex/models/class.rb
98
101
  - lib/cocoadex/models/docset.rb
102
+ - lib/cocoadex/models/element.rb
99
103
  - lib/cocoadex/models/entity.rb
100
104
  - lib/cocoadex/models/method.rb
101
105
  - lib/cocoadex/models/property.rb
102
- - lib/cocoadex/parser.rb
103
- - lib/cocoadex/version.rb
104
106
  - lib/ext/nil.rb
105
- - readme.md
106
107
  has_rdoc: true
107
108
  homepage: http://kattrali.github.com/cocoadex
108
109
  licenses: []
@@ -127,5 +128,5 @@ rubyforge_project:
127
128
  rubygems_version: 1.6.2
128
129
  signing_key:
129
130
  specification_version: 3
130
- summary: A command-line reference utility for Cocoa APIs.
131
+ summary: A command-line class reference utility for Cocoa APIs, based on RI.
131
132
  test_files: []
data/cocoadex.gemspec DELETED
@@ -1,25 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/cocoadex/version', __FILE__)
3
-
4
- Gem::Specification.new do |gem|
5
- gem.authors = ["Delisa Mason"]
6
- gem.email = ["iskanamagus@gmail.com"]
7
- gem.description = %q{A reference utility for Cocoa APIs}
8
- gem.summary = %q{A command-line reference utility for Cocoa APIs.}
9
- gem.homepage = "http://kattrali.github.com/cocoadex"
10
-
11
- gem.files = `git ls-files`.split($\)
12
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "cocoadex"
15
- gem.require_paths = ["lib"]
16
- gem.version = Cocoadex::VERSION
17
- gem.add_development_dependency('bacon')
18
- gem.add_development_dependency('rdoc')
19
- gem.add_development_dependency('aruba')
20
- gem.add_development_dependency('rake','~> 0.9.2')
21
- gem.add_dependency('methadone', '~>1.2.1')
22
- # gem.add_dependency('term-ansicolor')
23
- # gem.add_dependency('sqlite3')
24
- gem.add_dependency('nokogiri')
25
- end
data/data/_store DELETED
File without changes