rubyfocus 0.4.0 → 0.5.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.
- checksums.yaml +4 -4
- data/Manifest +2 -1
- data/README.md +2 -34
- data/lib/rubyfocus/fetchers/fetcher.rb +19 -1
- data/lib/rubyfocus/items/named_item.rb +4 -0
- data/lib/rubyfocus/items/task.rb +1 -1
- data/lib/rubyfocus/patch.rb +17 -2
- data/version.txt +1 -1
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2de36243510c62436694de980a91adeee728d06a
         | 
| 4 | 
            +
              data.tar.gz: ba5e7631fcab8e3e15b1f29b9ea3aaa631fe1bec
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7ef2f8b0838f15d69405d4905ff88d5c70c13b88d31453afbf67bca75cc881202c4df4b5ca628cec5e95348bf7623f752d911f842fe73be0b1847ce2736a0322
         | 
| 7 | 
            +
              data.tar.gz: 98c217b5fe2f8adf38a584bb26737b94c4f1b9719af4a8b24831220f13d0d8073930aca00fc7ba8f3169461b9adb3eb5fd3952e12e2a8fe6e82eeeab95300f9e
         | 
    
        data/Manifest
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            # Version: 0. | 
| 1 | 
            +
            # Version: 0.5.0
         | 
| 2 2 |  | 
| 3 3 | 
             
            Rubyfocus is a one-way (read-only) ruby bridge to OmniFocus. Analyse, store, inspect, or play with your projects and tasks in OmniFocus from the comfort and flexibility of ruby!
         | 
| 4 4 |  | 
| @@ -106,36 +106,4 @@ Rubyfocus makes use of this by fetching and reading OmniFocus' local store on yo | |
| 106 106 |  | 
| 107 107 | 
             
            `rubyfocus` is a work in progress. In the near future I hope to release a more comprehensive document detailing exactly which details of OmniFocus' projects and tasks are available to the user, and what you can do with them.
         | 
| 108 108 |  | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
            * Registering with the Omni Sync Server, so you don't need to always delete + reinstantiate the database.
         | 
| 112 | 
            -
            * Determining when you're "detached" from the latest version on the OSS.
         | 
| 113 | 
            -
            * A couple of example projects using rubyfocus (especially a static webpage generator for kanban)
         | 
| 114 | 
            -
             | 
| 115 | 
            -
            # History
         | 
| 116 | 
            -
             | 
| 117 | 
            -
            ## 0.4.0 // 2016-01-01
         | 
| 118 | 
            -
             | 
| 119 | 
            -
            * Happy new year!
         | 
| 120 | 
            -
            * [Modified] Container IDRef is now located on RankedItem, rather than having several on each RankedItem subclass.
         | 
| 121 | 
            -
            * [New] RankedItems can look at their ancestry much more easily, using RankedItem#ancestry and RankedItem#contained_within?
         | 
| 122 | 
            -
            * [New] Documents now forbid elements with duplicate IDs unless Document#allow_duplicate_ids is set to true.
         | 
| 123 | 
            -
            * [New] Patchers now treate CREATE nodes on elements whose IDs already exist in the database as UPDATE nodes
         | 
| 124 | 
            -
            * [Fixed] Patchers will now interpret missing parameters as "default values" e.g. project update without `status` parameter assumed to be active.
         | 
| 125 | 
            -
             | 
| 126 | 
            -
            ## 0.3.1 // 2015-12-31
         | 
| 127 | 
            -
             | 
| 128 | 
            -
            * [Bugfix] IDRefs will now return +nil+ if the relevant ID is not set.
         | 
| 129 | 
            -
             | 
| 130 | 
            -
            ## 0.3.0 // 2015-10-17
         | 
| 131 | 
            -
             | 
| 132 | 
            -
            * [New] Now supports remote syncing with the Omni Sync Server!
         | 
| 133 | 
            -
             | 
| 134 | 
            -
            ## 0.2.0 // 2015-10-11
         | 
| 135 | 
            -
             | 
| 136 | 
            -
            * [Bugfix] Will now turn tasks into projects and projects into tasks if the user has done this in OmniFocus.
         | 
| 137 | 
            -
            * [Bugfix] Rubyfocus::Patch now does patch application, rather than delegating to the Fetcher.
         | 
| 138 | 
            -
             | 
| 139 | 
            -
            ## 0.1.0 // 2015-10-10
         | 
| 140 | 
            -
             | 
| 141 | 
            -
            * Hello, world!
         | 
| 109 | 
            +
            My main goal is to register with the Omni Sync Server, so you don't need to always delete + reinstantiate the database.
         | 
| @@ -38,6 +38,24 @@ class Rubyfocus::Fetcher | |
| 38 38 | 
             
            		raise RuntimeError, "Method Fetcher#patch called for abstract class Fetcher."
         | 
| 39 39 | 
             
            	end
         | 
| 40 40 |  | 
| 41 | 
            +
            	# Returns the latest patch
         | 
| 42 | 
            +
            	def head
         | 
| 43 | 
            +
            		@head ||= patches.sort.last
         | 
| 44 | 
            +
            	end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            	# Can you reach head from the given ID?
         | 
| 47 | 
            +
            	def can_reach_head_from?(id)
         | 
| 48 | 
            +
            		patch_array = patches.select{ |p| p.from_ids.include?(id) }
         | 
| 49 | 
            +
            		until patch_array.empty?
         | 
| 50 | 
            +
            			p = patch_array.first
         | 
| 51 | 
            +
            			return true if p == self.head
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            			next_patches = patches.select{ |np| np.from_ids.include? p.to_id }
         | 
| 54 | 
            +
            			patch_array = patch_array[1..-1] + next_patches
         | 
| 55 | 
            +
            		end
         | 
| 56 | 
            +
            		return false
         | 
| 57 | 
            +
            	end
         | 
| 58 | 
            +
             | 
| 41 59 | 
             
            	#---------------------------------------
         | 
| 42 60 | 
             
            	# Patching methods
         | 
| 43 61 |  | 
| @@ -65,7 +83,7 @@ class Rubyfocus::Fetcher | |
| 65 83 | 
             
            	# apply the latest one.
         | 
| 66 84 | 
             
            	def next_patch(document)
         | 
| 67 85 | 
             
            		all_possible_patches = self.patches.select{ |patch| patch.can_patch?(document) }
         | 
| 68 | 
            -
            		return all_possible_patches. | 
| 86 | 
            +
            		return all_possible_patches.sort.first
         | 
| 69 87 | 
             
            	end
         | 
| 70 88 |  | 
| 71 89 |  | 
    
        data/lib/rubyfocus/items/task.rb
    CHANGED
    
    | @@ -67,7 +67,7 @@ class Rubyfocus::Task < Rubyfocus::RankedItem | |
| 67 67 | 
             
            	# The first non-completed task, determined by order
         | 
| 68 68 | 
             
            	def next_available_task
         | 
| 69 69 | 
             
            		nat_candidate = immediate_tasks.select{ |t| !t.completed? }.sort_by(&:rank).first
         | 
| 70 | 
            -
            		if nat_candidate.has_subtasks?
         | 
| 70 | 
            +
            		if nat_candidate && nat_candidate.has_subtasks?
         | 
| 71 71 | 
             
            			nat_candidate.next_available_task
         | 
| 72 72 | 
             
            		else
         | 
| 73 73 | 
             
            			nat_candidate
         | 
    
        data/lib/rubyfocus/patch.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # The patch class represents a text-file patch, storing update, delete, and creation operations.
         | 
| 2 2 | 
             
            # It should also be able to apply itself to an existing document.
         | 
| 3 3 | 
             
            class Rubyfocus::Patch
         | 
| 4 | 
            +
            	include Comparable
         | 
| 4 5 | 
             
            	# The fetcher this patch belongs to. We mainly use this to work out how to fetch content for the patch proper
         | 
| 5 6 | 
             
            	attr_accessor :fetcher
         | 
| 6 7 |  | 
| @@ -113,8 +114,6 @@ class Rubyfocus::Patch | |
| 113 114 | 
             
            		new_node = Rubyfocus::Parser.parse(nil, node)
         | 
| 114 115 | 
             
            		if new_node
         | 
| 115 116 | 
             
            			document.add_element(new_node, overwrite: true)
         | 
| 116 | 
            -
            		else
         | 
| 117 | 
            -
            			raise(RuntimeError, "Encountered unparsable XML during patch reading: #{node}.")
         | 
| 118 117 | 
             
            		end
         | 
| 119 118 | 
             
            	end
         | 
| 120 119 |  | 
| @@ -126,4 +125,20 @@ class Rubyfocus::Patch | |
| 126 125 | 
             
            			"([#{from_ids.join(", ")}] -> #{to_id})"
         | 
| 127 126 | 
             
            		end
         | 
| 128 127 | 
             
            	end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            	def <=> o
         | 
| 130 | 
            +
            		if self.time.nil?
         | 
| 131 | 
            +
            			if o.time.nil?
         | 
| 132 | 
            +
            				0
         | 
| 133 | 
            +
            			else
         | 
| 134 | 
            +
            				-1
         | 
| 135 | 
            +
            			end
         | 
| 136 | 
            +
            		else
         | 
| 137 | 
            +
            			if o.time.nil?
         | 
| 138 | 
            +
            				1
         | 
| 139 | 
            +
            			else
         | 
| 140 | 
            +
            				self.time <=> o.time
         | 
| 141 | 
            +
            			end
         | 
| 142 | 
            +
            		end
         | 
| 143 | 
            +
            	end
         | 
| 129 144 | 
             
            end
         | 
    
        data/version.txt
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0. | 
| 1 | 
            +
            0.5.1
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubyfocus
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jan-Yves Ruzicka
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-02-03 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: nokogiri
         | 
| @@ -112,3 +112,4 @@ signing_key: | |
| 112 112 | 
             
            specification_version: 4
         | 
| 113 113 | 
             
            summary: Pure ruby bridge to OmniFocus.
         | 
| 114 114 | 
             
            test_files: []
         | 
| 115 | 
            +
            has_rdoc: 
         |