dry-matcher 项目教程
1. 项目的目录结构及介绍
dry-matcher/
├── lib/
│ ├── dry/
│ │ ├── matcher.rb
│ │ └── matcher/
│ │ ├── case.rb
│ │ └── version.rb
│ └── dry-matcher.rb
├── spec/
│ ├── dry/
│ │ └── matcher_spec.rb
│ └── spec_helper.rb
├── .gitignore
├── Gemfile
├── LICENSE.txt
├── README.md
└── dry-matcher.gemspec
- lib/: 包含项目的核心代码。
- dry/matcher.rb: 主文件,定义了
Dry::Matcher
类。 - dry/matcher/case.rb: 定义了
Dry::Matcher::Case
类,用于创建匹配案例。 - dry/matcher/version.rb: 定义了项目的版本号。
- dry/matcher.rb: 主文件,定义了
- spec/: 包含项目的测试代码。
- dry/matcher_spec.rb: 针对
Dry::Matcher
类的测试。 - spec_helper.rb: 测试辅助文件。
- dry/matcher_spec.rb: 针对
- .gitignore: Git 忽略文件列表。
- Gemfile: 定义了项目的依赖。
- LICENSE.txt: 项目的许可证。
- README.md: 项目的说明文档。
- dry-matcher.gemspec: 项目的 gem 规范文件。
2. 项目的启动文件介绍
项目的启动文件是 lib/dry-matcher.rb
,该文件引入了 dry/matcher
目录下的所有必要文件,并定义了 Dry::Matcher
类。
require "dry/matcher/case"
require "dry/matcher/version"
module Dry
class Matcher
def initialize(**cases)
@cases = cases
end
def call(value, &block)
@cases.each do |name, case_|
if result = case_.(value)
return block.call(name, result)
end
end
nil
end
end
end
3. 项目的配置文件介绍
项目的配置文件主要是 dry-matcher.gemspec
,该文件定义了项目的 gem 规范,包括名称、版本、作者、描述、依赖等信息。
Gem::Specification.new do |spec|
spec.name = "dry-matcher"
spec.version = Dry::Matcher::VERSION
spec.authors = ["Piotr Solnica"]
spec.email = ["piotr.solnica@gmail.com"]
spec.summary = "Flexible, expressive pattern matching for Ruby"
spec.description = spec.summary
spec.homepage = "https://dry-rb.org/gems/dry-matcher"
spec.license = "MIT"
spec.files = Dir["lib/**/*", "LICENSE", "Rakefile", "README.md"]
spec.require_paths = ["lib"]
spec.add_runtime_dependency "dry-core", "~> 0.4"
spec.add_development_dependency "bundler", "~> 2.0"
spec.add_development_dependency "rake", "~> 13.0"
spec.add_development_dependency "rspec", "~> 3.9"
end
以上是 dry-matcher
项目的基本教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。