foggy_bottom 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,34 @@
1
1
  module FoggyBottom
2
2
  module Columns
3
+ module Status
4
+ def self.included(base)
5
+ base.class_eval do
6
+ ALL_COLUMNS.each do |column|
7
+ define_method(column) do
8
+ @attributes[column]
9
+ end
10
+
11
+ define_method("#{column}=") do |arg|
12
+ send("#{column}_will_change!") unless send(column) == arg
13
+
14
+ @attributes[column] = arg
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ ALL_COLUMNS = %w(
21
+ ixStatus
22
+ sStatus
23
+ ixCategory
24
+ fWorkDone
25
+ fResolved
26
+ fDuplicate
27
+ fDeleted
28
+ iOrder
29
+ )
30
+ end
31
+
3
32
  module Case
4
33
  def self.included(base)
5
34
  base.class_eval do
@@ -13,6 +13,8 @@ class FoggyBottom::Console
13
13
  search(get("Terms"))
14
14
  when :resolve
15
15
  resolve(get("Case ID"))
16
+ when :status_list
17
+ puts FoggyBottom::Status.all(api).inspect
16
18
  when :quit
17
19
  exit 0
18
20
  else
@@ -23,7 +25,7 @@ class FoggyBottom::Console
23
25
 
24
26
  protected
25
27
  def show_menu
26
- commands = %w( search resolve quit )
28
+ commands = %w( search resolve status_list quit )
27
29
  choice = (Hirb::Menu.render commands, :helper_class => false, :directions => false).first
28
30
  choice ? choice.to_sym : :unknown
29
31
  end
@@ -0,0 +1,36 @@
1
+ class FoggyBottom::Status
2
+ include FoggyBottom::Columns::Status
3
+
4
+ include ActiveModel::AttributeMethods
5
+ include ActiveModel::Dirty
6
+ include ActiveModel::Serialization
7
+
8
+ define_attribute_methods ALL_COLUMNS
9
+
10
+ attr_accessor :api
11
+
12
+ delegate :logger, :to => :api
13
+
14
+ class << self
15
+ def all(api)
16
+ api.exec(:listStatuses).css("status").collect do |details|
17
+ create_from_xml(details, api)
18
+ end
19
+ end
20
+
21
+ def create_from_xml(xml, api)
22
+ new( {}.tap do |attributes|
23
+ (FoggyBottom::Columns::Status::ALL_COLUMNS ).each do |col|
24
+ attributes[col] = xml.at_css(col).content
25
+ end
26
+ end).tap do |instance|
27
+ instance.api = api
28
+ end
29
+ end
30
+ end
31
+
32
+ def initialize(attributes = {})
33
+ @attributes = attributes.stringify_keys
34
+ end
35
+ end
36
+
@@ -1,3 +1,3 @@
1
1
  module FoggyBottom
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/foggy_bottom.rb CHANGED
@@ -12,4 +12,5 @@ require 'hirb'
12
12
  require 'foggy_bottom/api'
13
13
  require 'foggy_bottom/columns'
14
14
  require 'foggy_bottom/case'
15
+ require 'foggy_bottom/status'
15
16
  require 'foggy_bottom/console'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foggy_bottom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-03 00:00:00.000000000 -04:00
12
+ date: 2011-10-07 00:00:00.000000000 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &2168940340 !ruby/object:Gem::Requirement
17
+ requirement: &2152853600 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2168940340
25
+ version_requirements: *2152853600
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activemodel
28
- requirement: &2168939840 !ruby/object:Gem::Requirement
28
+ requirement: &2152853100 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2168939840
36
+ version_requirements: *2152853100
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: hirb
39
- requirement: &2168939420 !ruby/object:Gem::Requirement
39
+ requirement: &2152852680 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2168939420
47
+ version_requirements: *2152852680
48
48
  description: It wraps the FogBugz API.
49
49
  email:
50
50
  - jon@burningbush.us
@@ -62,6 +62,7 @@ files:
62
62
  - lib/foggy_bottom/case.rb
63
63
  - lib/foggy_bottom/columns.rb
64
64
  - lib/foggy_bottom/console.rb
65
+ - lib/foggy_bottom/status.rb
65
66
  - lib/foggy_bottom/version.rb
66
67
  has_rdoc: true
67
68
  homepage: ''