ankirb 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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