转载请标明出处:http://fuliang.iteye.com/blog/1127437
我们抓取的网页抽取的结果是带有日期的文件,经常需要操作某个日期范围的文件,来进行统计,抽样,入库,所有需要一个方便的DSL来处理这件事情。
我们希望制定几个条件就可以得到符合条件的文件,比如:
data_set = CrawlerDataSet.with_cond do |cond|
cond.dir("/mydir").
from_date("2011-05-01").
to_date("2011-07-08")
end
然后我们可以得到符合条件的文件名:
data_set.file_names
我们还可以利用构建自己的DSL之二中的CrawlerFile:
data_set.each do |file|
puts file.version
end
我们可以利用Date Range来轻松完成这些功能:
#!/usr/bin/env ruby
require 'date'
require 'crawler_file'
class CrawlerDataSet
class << self
def with_cond
return yield CrawlerDataSet.new
end
end
def initialize
@files = []
end
def dir(dir)
@dir = dir
self
end
def from_date(from_date)
@from_date = Date.parse(from_date)
self
end
def to_date(to_date=nil)
@to_date = if to_date.nil? then Date.today else Date.parse(to_date) end
self
end
#use the date range
def file_names
(@from_date .. @to_date).each do |date|
date_str = date.strftime("%Y%m%d")
Dir.glob("#@dir/#{date_str}-*dedup").each do |file|
@files << file
end
end
@files
end
def each
file_names.each do |file_name|
begin
crawler_file = CrawlerFile.new(file_name)
yield crawler_file
ensure
crawler_file.close
end
end
end
def each_with_name
file_names.each do |file_name|
begin
crawler_file = CrawlerFile.new(file_name)
yield crawler_file, file_name
ensure
crawler_file.close
end
end
end
end
分享到:
相关推荐
包含翻译后的API文档:dsl-1.2.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...
Jbuilder - 通过一个构建式DSL创建JSON结构
anko-example, 使用 Anko DSL构建的小型应用程序 Anko示例项目这个 repo 中的代码展示了如何在 Android Gradle项目中设置 Anko 库。 应用程序非常简单,但是它显示了一些重要的Anko 。 在 Android Studio 中使用这个...
用于构建自定义DSL。 设置 $ npm install --save linear-dsl 用法 解析自定义DSL查询。 const dsl = require ( 'linear-dsl' ) ; let data = dsl . parse ( 'a(foo) AND b(2 bars) OR c(4)' ) ; 验证查询映射。 ...
job-dsl-gradle-example, 使用Gradle构建和测试的作业DSL项目示例 工作 DSL Gradle示例使用Gradle构建和测试的作业 DSL 项目示例。 签出这里演示文稿这里示例的演练。文件结构.├── src│ ├── jobs # DSL ...
Sinumerik 840Dsl 内部集成刀库管理功能使用,PLC编程,调试.示例
在这篇资源中,我们将详细介绍如何使用DSL来构建复杂的查询语句,以满足各种搜索需求。首先,我们将学习DSL的基本结构和语法规则,包括查询、过滤器、聚合和排序等核心概念。通过深入了解DSL的语法,您将能够灵活地...
包含翻译后的API文档:dsl-1.2.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:cn.tenmg:dsl:1.2.7; 标签:tenmg、dsl、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开...
Ruby-JMeter - 一个基于Ruby的DSL用于构建JMeter测试计划
groovy 一个不错的文档 实现dsl
TXT文本替换和转换成DSL文件,,DSL可直接用Abbyy_DLScompiler编译
本文档详细的讲解了LSM6DSL的详细配置,其中讲解了数据的读取,唤醒模式,计步功能等。
本篇是哥自己根据《Gradle In Action》翻译的,继哥之前的Groovy DSL...通过gradle这个在项目构建领域的特定DSL,理解如何使用gradle来构建项目,以及更深入的理解前传中讲解的DSL体系。希望本书能给小伙伴们带来帮助。
rvcompose:一个易于使用、可扩展的kotlin dsl,用于使用recycerview构建动态可重用ui组件
Kotlin DSL示例 该项目是Kotlin DSL构建的示例。 在这里,您将找到使用不同功能的示例。 此示例的领域是为教师和学生制定时间表。 文件夹src/test/kotlin/kotlin_dsl包含以下文件: 介绍DSL使用情况的Demo.kt dsl.kt...
Build RecyclerView With DSL > Let's talk about how to use DSL in RecyclerView, this framework has been widely used in my project. It could help you build RecyclerView List in DSL Style like Anko ...
840DSL系统的关于刀库管理调试,刀库的响应,刀库的设置,以及如何实现刀库响应表的命令,应答。
DSL工程示范站,DSL图片规划,标准化施工
gradlekotlindsl 该应用程序是使用JHipster 5.0.0-beta.2生成的,您可以在找到文档和帮助。发展在生成此项目之前,必须在计算机上安装和配置以下依赖项: :我们使用Node来运行开发Web服务器并构建项目。 根据您的...
ST原厂LSM6DSL I2C总线驱动 In the 'driver' folder there are the driver files of Mems Sensor (.h and .c) to be included in your project. Driver documentation can be generate using Doxigen tool. The ...