ankirb 0.3.1 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65b27fbe3d7b717c2b02cabbfcc1e959ffb457f2
4
- data.tar.gz: 3e346c9ad189b26eec0e20bf0a31f94198cbb8e9
3
+ metadata.gz: be0143b8e8b71da17d448f58ab3d80649722194f
4
+ data.tar.gz: 28be919ff3e50b7fb0834efb7818841da2c37d89
5
5
  SHA512:
6
- metadata.gz: 11d7e62d0550fc1bd1f1c0555c911ad569a8a7bb7ceda6db80f802e053631f314594422c26404b744cb012be9ef6f51d3f3b2b5e6f884340144bc157079ec1fa
7
- data.tar.gz: 13f118184b74d66ff6415ac597f0f34a33714988244efde7554711ac8fd3804958963106480e4f845d3dd74c531e1a1ff7c6ac25566e1aeccfd54211460fbbdd
6
+ metadata.gz: 289d2d9b779f9dbfc1f205f80ccaebc61ce39a888642a1303cd1411364979bcf9830ff5293f712d888c1a552c78b0a18b1c14908ac5130f58ea3e9a6dbec3fc5
7
+ data.tar.gz: 2699677db6ee80aa15174a8a67ea17782dde17a11d56a77294d645a28faee40c510cbee6fcbd3974d4df5595bbf47f3caf45b660ee93eb3ae0d23ee111858ad6
data/README.md CHANGED
@@ -37,6 +37,9 @@ card.back << "dexters_lab_omelette.wav"
37
37
  #add card to the deck
38
38
  deck.add_card card
39
39
 
40
+ #add the reverse version of the card
41
+ deck.add_card card.invert
42
+
40
43
  #export to ~/Anki/Decks/FancyExampleDeck.apkg
41
44
  Anki::apkg.export deck, "~/Anki/Decks"
42
45
  ```
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'bundler', '~> 1.11'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'minitest', '~> 5.0'
26
+ spec.add_development_dependency 'pry-byebug'
26
27
  spec.add_runtime_dependency 'rake', '~> 10.5'
27
28
  spec.add_runtime_dependency 'base91', '0.0.1'
28
29
  spec.add_runtime_dependency 'rubyzip', '~> 1.1'
@@ -19,9 +19,24 @@ module Anki
19
19
  @back
20
20
  end
21
21
 
22
+ # returns a new card with the front and back of the original inverted
23
+ def invert
24
+ c = Anki::Card.new(front: @back.to_s, back: @front.to_s)
25
+ c.front.media = @back.media
26
+ c.back.media = @front.media
27
+ c
28
+ end
29
+
30
+ # flips the front and back of this card
31
+ def invert!
32
+ @front, @back = @back, @front
33
+ end
34
+
35
+ # is media attached to this card?
22
36
  def has_media?
23
37
  !@front.media.empty? or !back.media.empty?
24
38
  end
39
+
25
40
  def front= value
26
41
  @front.content = value
27
42
  end
@@ -17,11 +17,28 @@ module Anki
17
17
  end
18
18
  end
19
19
 
20
+ # adds a card to the deck
20
21
  def add_card card
21
22
  card.deck = self
22
23
  @cards[card.id] = card
23
24
  end
24
25
 
26
+ # adds a card, and then inserts the inverted version of the card immediately after
27
+ def add_card_with_inversion card
28
+ add_card card
29
+ add_card card.invert
30
+ end
31
+
32
+ # add inverted versions of the cards at the end of the deck
33
+ def add_inversions
34
+ @cards.values.each {|c| add_card c.invert }
35
+ end
36
+
37
+ # invert the faces of every card in place
38
+ def invert!
39
+ @cards.values.each {|c| c.invert! }
40
+ end
41
+
25
42
  def cards
26
43
  @cards.values
27
44
  end
@@ -29,6 +46,12 @@ module Anki
29
46
  def [] id
30
47
  @cards[id]
31
48
  end
49
+
50
+ def initialize_copy(orig)
51
+ super
52
+ orig.instance_variable_set(:@cards, {})
53
+ @cards.values.each { |c| orig.add_card c.dup }
54
+ end
32
55
  end
33
56
 
34
57
 
@@ -9,7 +9,10 @@ module Anki
9
9
 
10
10
  class APKGExporter
11
11
 
12
+ # exports the provided deck object to an apkg file at the specified path
12
13
  def self.export deck, path
14
+ deck = deck.dup
15
+
13
16
  Dir.mktmpdir do |dir|
14
17
  db = DB.create File.join(dir,'collection.anki2')
15
18
 
@@ -33,7 +36,7 @@ module Anki
33
36
  def self.export_media deck, path
34
37
  media_cards = deck.cards.select{|c| c.has_media? }
35
38
  faces_with_media = media_cards.reduce([]){|arr,c| arr.push(c.front,c.back)}.select{|f|!f.media.empty?}
36
- media ={}
39
+ media = {}
37
40
 
38
41
  faces_with_media.each do |face|
39
42
  face.media.each do |media_reference|
@@ -11,10 +11,11 @@ module Anki
11
11
  if str.match(/{{img}}/)
12
12
  str.sub!(/{{img}}/, tag)
13
13
  else
14
- str << tag
14
+ str << tag unless str.include? tag
15
15
  end
16
16
  when media.audio?, media.video? #video also has a sound tag, idk
17
- str << "[sound:#{File.basename(filepath)}]"
17
+ tag = "[sound:#{File.basename(filepath)}]"
18
+ str << tag unless str.include? tag
18
19
  else
19
20
  raise "Unknown media type - #{filepath}"
20
21
  end
@@ -1,3 +1,3 @@
1
1
  module Anki
2
- VERSION = '0.3.1' unless const_defined?(:VERSION)
2
+ VERSION = '0.4.0' unless const_defined?(:VERSION)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ankirb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donald Hutchison
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-12-27 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement