arkaan 1.4.0 → 1.4.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/arkaan/campaigns/file.rb +45 -0
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e39623177ee5030ea01c5247ff141e16cf822ff
4
- data.tar.gz: c6ece8164773ae0dbd40cdb9f81ea2cb3f51ff2e
3
+ metadata.gz: fddc22f0b04607f2fc9e415ff3d6d7b557936bec
4
+ data.tar.gz: dfb2e5b7a06d076800c44584154fc9febf13fd37
5
5
  SHA512:
6
- metadata.gz: a7a0158cf4887d94e9213497c0281076ddabdd230884d1fc5b7fd605376f3568b303aeedada76ba685a4696c6678dad53668441323e9300fc00580e144ca26c4
7
- data.tar.gz: c37f7e89de3de5a144233b69cddae20baa1a2670a0f1513dd9e95c9f3d1bcface464d0fcb92ae43aa80c75cd0096b9af44021b77bb0d574e64bd747ee67feb9c
6
+ metadata.gz: 0206f995a6d7e37f87da7955dbcdb8f7dc0011202a3a32ff947547a79fb7c0c1cd2da9e3c3112c9767db8f28784ee76baf44dec066f2ee2a64939f963ad21d25
7
+ data.tar.gz: 27444f0ffbdca19cbb3e085618b01bcc737389c1f8dc9deda271a2906fb4ffefe50847ce87212ca7520e4049d7463c6ea4106c0d8aa0f3450a28b913f5e71f97
@@ -15,6 +15,51 @@ module Arkaan
15
15
  mime_type ['image/*', 'text/plain']
16
16
 
17
17
  validates :name, presence: {message: 'required'}
18
+
19
+ validate :name_unicity
20
+
21
+ # Checks if the name is unique in the campaign, and if it is not then modifies it.
22
+ # The modifications are the same than in a windows or UNIX system :
23
+ # - if the name exists as it is given, the system adds the suffix "(1)" to it.
24
+ # - if the name with the suffix still exists, the system tries to increment it until an available name is found.
25
+ # - the found name is then afected to the name of the current file.
26
+ def name_unicity
27
+ if !campaign.nil? && !self[:name].nil?
28
+ if exists_in_campaign(self[:name])
29
+ suffix = 1
30
+ while exists_in_campaign(merge_suffix(suffix))
31
+ suffix = suffix + 1
32
+ end
33
+ self[:name] = merge_suffix(suffix)
34
+ end
35
+ end
36
+ end
37
+
38
+ # Merges the given suffix with the name correctly.
39
+ # @param suffix [String] the suffix to append between perenthesis at the end of the file name, but before the extension.
40
+ # @return [String] the complete name for the file, with the suffix correctly appended.
41
+ def merge_suffix(suffix)
42
+ return "#{raw_name} (#{suffix}).#{extension}"
43
+ end
44
+
45
+ # Checks if the given name already exists for a file in the campaign.
46
+ # @param tmp_name [String] the name to check the existence of in the campaign.
47
+ # @return [Boolean] TRUE if the file exists in the campaign, FALSE otherwise.
48
+ def exists_in_campaign(tmp_name)
49
+ campaign.files.where(name: tmp_name, :id.ne => id).exists?
50
+ end
51
+
52
+ # Returns the file name without the extension for the current file.
53
+ # @return [String] the name of the file without the extension.
54
+ def raw_name
55
+ return self[:name].gsub(".#{extension}", '')
56
+ end
57
+
58
+ # Returns the extension of the file, without the dot.
59
+ # @return [String] the text representation for this file extension, without the leading dot.
60
+ def extension
61
+ return self[:name].split('.').last
62
+ end
18
63
  end
19
64
  end
20
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-02 00:00:00.000000000 Z
11
+ date: 2018-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec