nano-max-tool 0.0.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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/acts-as-taggable-on-13.0.0/LICENSE.md +20 -0
  3. data/acts-as-taggable-on-13.0.0/db/migrate/1_acts_as_taggable_on_migration.rb +33 -0
  4. data/acts-as-taggable-on-13.0.0/db/migrate/2_add_missing_unique_indices.rb +23 -0
  5. data/acts-as-taggable-on-13.0.0/db/migrate/3_add_taggings_counter_cache_to_tags.rb +16 -0
  6. data/acts-as-taggable-on-13.0.0/db/migrate/4_add_missing_taggable_index.rb +12 -0
  7. data/acts-as-taggable-on-13.0.0/db/migrate/5_change_collation_for_tag_names.rb +12 -0
  8. data/acts-as-taggable-on-13.0.0/db/migrate/6_add_missing_indexes_on_taggings.rb +24 -0
  9. data/acts-as-taggable-on-13.0.0/db/migrate/7_add_tenant_to_taggings.rb +13 -0
  10. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/default_parser.rb +77 -0
  11. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/engine.rb +6 -0
  12. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/generic_parser.rb +21 -0
  13. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tag.rb +138 -0
  14. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tag_list.rb +103 -0
  15. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/caching.rb +46 -0
  16. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/collection.rb +220 -0
  17. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/core.rb +333 -0
  18. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/ownership.rb +146 -0
  19. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/related.rb +84 -0
  20. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tag_list_type.rb +8 -0
  21. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/all_tags_query.rb +115 -0
  22. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/any_tags_query.rb +74 -0
  23. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/exclude_tags_query.rb +85 -0
  24. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/query_base.rb +78 -0
  25. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query.rb +17 -0
  26. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable.rb +119 -0
  27. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tagger.rb +85 -0
  28. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tagging.rb +40 -0
  29. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tags_helper.rb +17 -0
  30. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/utils.rb +35 -0
  31. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/version.rb +5 -0
  32. data/acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on.rb +118 -0
  33. data/acts-as-taggable-on-13.0.0/lib/tasks/example/acts-as-taggable-on.rb.example +8 -0
  34. data/acts-as-taggable-on-13.0.0/lib/tasks/install_initializer.rake +23 -0
  35. data/acts-as-taggable-on-13.0.0/lib/tasks/tags_collate_utf8.rake +21 -0
  36. data/nano-max-tool.gemspec +12 -0
  37. metadata +76 -0
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOn
4
+ class Tagging < ActsAsTaggableOn.base_class.constantize # :nodoc:
5
+ self.table_name = ActsAsTaggableOn.taggings_table
6
+
7
+ DEFAULT_CONTEXT = 'tags'
8
+ belongs_to :tag, class_name: '::ActsAsTaggableOn::Tag', counter_cache: ActsAsTaggableOn.tags_counter
9
+ belongs_to :taggable, polymorphic: true
10
+
11
+ belongs_to :tagger, polymorphic: true, optional: true
12
+
13
+ scope :owned_by, ->(owner) { where(tagger: owner) }
14
+ scope :not_owned, -> { where(tagger_id: nil, tagger_type: nil) }
15
+
16
+ scope :by_contexts, ->(contexts) { where(context: (contexts || DEFAULT_CONTEXT)) }
17
+ scope :by_context, ->(context = DEFAULT_CONTEXT) { by_contexts(context.to_s) }
18
+
19
+ scope :by_tenant, ->(tenant) { where(tenant: tenant) }
20
+
21
+ validates_presence_of :context
22
+ validates_presence_of :tag_id
23
+
24
+ validates_uniqueness_of :tag_id, scope: %i[taggable_type taggable_id context tagger_id tagger_type]
25
+
26
+ after_destroy :remove_unused_tags
27
+
28
+ private
29
+
30
+ def remove_unused_tags
31
+ if ActsAsTaggableOn.remove_unused_tags
32
+ if ActsAsTaggableOn.tags_counter
33
+ tag.destroy if tag.reload.taggings_count.zero?
34
+ elsif tag.reload.taggings.none?
35
+ tag.destroy
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOn
4
+ module TagsHelper
5
+ # See the wiki for an example using tag_cloud.
6
+ def tag_cloud(tags, classes)
7
+ return [] if tags.empty?
8
+
9
+ max_count = tags.max_by(&:taggings_count).taggings_count.to_f
10
+
11
+ tags.each do |tag|
12
+ index = ((tag.taggings_count / max_count) * (classes.size - 1))
13
+ yield tag, classes[index.nan? ? 0 : index.round]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This module is deprecated and will be removed in the incoming versions
4
+
5
+ module ActsAsTaggableOn
6
+ module Utils
7
+ class << self
8
+ # Use ActsAsTaggableOn::Tag connection
9
+ def connection
10
+ ActsAsTaggableOn::Tag.connection
11
+ end
12
+
13
+ def using_postgresql?
14
+ connection && %w[PostgreSQL PostGIS].include?(connection.adapter_name)
15
+ end
16
+
17
+ def using_mysql?
18
+ connection && connection.adapter_name == 'Mysql2'
19
+ end
20
+
21
+ def sha_prefix(string)
22
+ Digest::SHA1.hexdigest(string)[0..6]
23
+ end
24
+
25
+ def like_operator
26
+ using_postgresql? ? 'ILIKE' : 'LIKE'
27
+ end
28
+
29
+ # escape _ and % characters in strings, since these are wildcards in SQL.
30
+ def escape_like(str)
31
+ str.gsub(/[!%_]/) { |x| "!#{x}" }
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActsAsTaggableOn
4
+ VERSION = '13.0.0'
5
+ end
@@ -0,0 +1,118 @@
1
+ require 'active_record'
2
+ require 'active_record/version'
3
+ require 'active_support/core_ext/module'
4
+ require 'zeitwerk'
5
+
6
+ loader = Zeitwerk::Loader.for_gem
7
+ loader.inflector.inflect "acts-as-taggable-on" => "ActsAsTaggableOn"
8
+ loader.setup
9
+
10
+ begin
11
+ require 'rails/engine'
12
+ require 'acts-as-taggable-on/engine'
13
+ rescue LoadError
14
+ end
15
+
16
+ require 'digest/sha1'
17
+
18
+ module ActsAsTaggableOn
19
+ class DuplicateTagError < StandardError
20
+ end
21
+
22
+ def self.setup
23
+ @configuration ||= Configuration.new
24
+ yield @configuration if block_given?
25
+ end
26
+
27
+ def self.method_missing(method_name, *args, &block)
28
+ @configuration.respond_to?(method_name) ?
29
+ @configuration.send(method_name, *args, &block) : super
30
+ end
31
+
32
+ def self.respond_to?(method_name, include_private=false)
33
+ @configuration.respond_to? method_name
34
+ end
35
+
36
+ def self.glue
37
+ setting = @configuration.delimiter
38
+ delimiter = setting.kind_of?(Array) ? setting[0] : setting
39
+ delimiter.end_with?(' ') ? delimiter : "#{delimiter} "
40
+ end
41
+
42
+ class Configuration
43
+ attr_accessor :force_lowercase, :force_parameterize,
44
+ :remove_unused_tags, :default_parser,
45
+ :tags_counter, :tags_table,
46
+ :taggings_table
47
+ attr_reader :delimiter, :strict_case_match, :base_class
48
+
49
+ def initialize
50
+ @delimiter = ','
51
+ @force_lowercase = false
52
+ @force_parameterize = false
53
+ @strict_case_match = false
54
+ @remove_unused_tags = false
55
+ @tags_counter = true
56
+ @default_parser = DefaultParser
57
+ @force_binary_collation = false
58
+ @tags_table = :tags
59
+ @taggings_table = :taggings
60
+ @base_class = '::ActiveRecord::Base'
61
+ end
62
+
63
+ def strict_case_match=(force_cs)
64
+ @strict_case_match = force_cs unless @force_binary_collation
65
+ end
66
+
67
+ def delimiter=(string)
68
+ ActiveRecord::Base.logger.warn <<WARNING
69
+ ActsAsTaggableOn.delimiter is deprecated \
70
+ and will be removed from v4.0+, use \
71
+ a ActsAsTaggableOn.default_parser instead
72
+ WARNING
73
+ @delimiter = string
74
+ end
75
+
76
+ def force_binary_collation=(force_bin)
77
+ if Utils.using_mysql?
78
+ if force_bin
79
+ Configuration.apply_binary_collation(true)
80
+ @force_binary_collation = true
81
+ @strict_case_match = true
82
+ else
83
+ Configuration.apply_binary_collation(false)
84
+ @force_binary_collation = false
85
+ end
86
+ end
87
+ end
88
+
89
+ def self.apply_binary_collation(bincoll)
90
+ if Utils.using_mysql?
91
+ coll = 'utf8_general_ci'
92
+ coll = 'utf8_bin' if bincoll
93
+ begin
94
+ ActiveRecord::Migration.execute("ALTER TABLE #{Tag.table_name} MODIFY name varchar(255) CHARACTER SET utf8 COLLATE #{coll};")
95
+ rescue Exception => e
96
+ puts "Trapping #{e.class}: collation parameter ignored while migrating for the first time."
97
+ end
98
+ end
99
+ end
100
+
101
+ def base_class=(base_class)
102
+ raise "base_class must be a String" unless base_class.is_a?(String)
103
+ @base_class = base_class
104
+ end
105
+
106
+ end
107
+
108
+ setup
109
+ end
110
+
111
+ ActiveSupport.on_load(:active_record) do
112
+ extend ActsAsTaggableOn::Taggable
113
+ include ActsAsTaggableOn::Tagger
114
+ end
115
+
116
+ ActiveSupport.on_load(:action_view) do
117
+ include ActsAsTaggableOn::TagsHelper
118
+ end
@@ -0,0 +1,8 @@
1
+ ActsAsTaggableOn.setup do |config|
2
+ # This works because the classes where the base class is a concern, Tag and Tagging
3
+ # are autoloaded, and won't be started until after the initializers run. The value
4
+ # must be a String, as the Rails Zeitwerk autoloader will not allow models to be
5
+ # referenced at initialization time.
6
+ #
7
+ # config.base_class = 'ApplicationRecord'
8
+ end
@@ -0,0 +1,23 @@
1
+ namespace :acts_as_taggable_on do
2
+
3
+ namespace :sharded_db do
4
+
5
+ desc "Install initializer setting custom base class"
6
+ task :install_initializer => [:environment, "config/initializers/foo"] do
7
+ source = File.join(
8
+ Gem.loaded_specs["acts-as-taggable-on"].full_gem_path,
9
+ "lib",
10
+ "tasks",
11
+ "examples",
12
+ "acts-as-taggable-on.rb.example"
13
+ )
14
+
15
+ destination = "config/initializers/acts-as-taggable-on.rb"
16
+
17
+ cp source, destination
18
+ end
19
+
20
+ directory "config/initializers"
21
+ end
22
+
23
+ end
@@ -0,0 +1,21 @@
1
+ # These rake tasks are to be run by MySql users only, they fix the management of
2
+ # binary-encoded strings for tag 'names'. Issues:
3
+ # https://github.com/mbleigh/acts-as-taggable-on/issues/623
4
+
5
+ namespace :acts_as_taggable_on_engine do
6
+
7
+ namespace :tag_names do
8
+
9
+ desc "Forcing collate of tag names to utf8_bin"
10
+ task :collate_bin => [:environment] do |t, args|
11
+ ActsAsTaggableOn::Configuration.apply_binary_collation(true)
12
+ end
13
+
14
+ desc "Forcing collate of tag names to utf8_general_ci"
15
+ task :collate_ci => [:environment] do |t, args|
16
+ ActsAsTaggableOn::Configuration.apply_binary_collation(false)
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,12 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "nano-max-tool"
3
+ s.version = "0.0.1"
4
+ s.summary = "Research test"
5
+ s.description = "University research based on acts-as-taggable-on"
6
+ s.authors = ["Andrey78"]
7
+ s.email = ["cakoc614@gmail.com"]
8
+ s.files = Dir.glob("**/*").reject { |f| f.end_with?('.gem') }
9
+ s.homepage = "https://rubygems.org/profiles/Andrey78"
10
+ s.license = "MIT"
11
+ s.metadata = { "source_code_uri" => "https://github.com/Andrey78/nano-max-tool" }
12
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nano-max-tool
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrey78
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2026-07-06 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: University research based on acts-as-taggable-on
13
+ email:
14
+ - cakoc614@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - acts-as-taggable-on-13.0.0/LICENSE.md
20
+ - acts-as-taggable-on-13.0.0/db/migrate/1_acts_as_taggable_on_migration.rb
21
+ - acts-as-taggable-on-13.0.0/db/migrate/2_add_missing_unique_indices.rb
22
+ - acts-as-taggable-on-13.0.0/db/migrate/3_add_taggings_counter_cache_to_tags.rb
23
+ - acts-as-taggable-on-13.0.0/db/migrate/4_add_missing_taggable_index.rb
24
+ - acts-as-taggable-on-13.0.0/db/migrate/5_change_collation_for_tag_names.rb
25
+ - acts-as-taggable-on-13.0.0/db/migrate/6_add_missing_indexes_on_taggings.rb
26
+ - acts-as-taggable-on-13.0.0/db/migrate/7_add_tenant_to_taggings.rb
27
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on.rb
28
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/default_parser.rb
29
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/engine.rb
30
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/generic_parser.rb
31
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tag.rb
32
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tag_list.rb
33
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable.rb
34
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/caching.rb
35
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/collection.rb
36
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/core.rb
37
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/ownership.rb
38
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/related.rb
39
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tag_list_type.rb
40
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query.rb
41
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/all_tags_query.rb
42
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/any_tags_query.rb
43
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/exclude_tags_query.rb
44
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/taggable/tagged_with_query/query_base.rb
45
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tagger.rb
46
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tagging.rb
47
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/tags_helper.rb
48
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/utils.rb
49
+ - acts-as-taggable-on-13.0.0/lib/acts-as-taggable-on/version.rb
50
+ - acts-as-taggable-on-13.0.0/lib/tasks/example/acts-as-taggable-on.rb.example
51
+ - acts-as-taggable-on-13.0.0/lib/tasks/install_initializer.rake
52
+ - acts-as-taggable-on-13.0.0/lib/tasks/tags_collate_utf8.rake
53
+ - nano-max-tool.gemspec
54
+ homepage: https://rubygems.org/profiles/Andrey78
55
+ licenses:
56
+ - MIT
57
+ metadata:
58
+ source_code_uri: https://github.com/Andrey78/nano-max-tool
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubygems_version: 3.6.2
74
+ specification_version: 4
75
+ summary: Research test
76
+ test_files: []