亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? general.pm

?? 普通的ETL工具
?? PM
?? 第 1 頁 / 共 2 頁
字號:
# vim:ts=4 sw=4
# ----------------------------------------------------------------------------------------------------
#  Name		: ETL::Pequel3::Type::General.pm
#  Created	: 8 May 2006
#  Author	: Mario Gaffiero (gaffie)
#
# Copyright 1999-2007 Mario Gaffiero.
# 
# This file is part of Pequel(TM).
# 
# Pequel is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
# 
# Pequel is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Pequel; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
# ----------------------------------------------------------------------------------------------------
# Modification History
# When          Version     Who     What
# ----------------------------------------------------------------------------------------------------
require 5.005_62;
use strict;
use warnings;
use vars qw($VERSION $BUILD);
$VERSION = 0.01;
$BUILD = 'Friday September 22 21:19:58 BST 2006';
use ETL::Pequel3::Type::Macros;
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::General::Abstract;
	use base qw(ETL::Pequel3::Type::Macros::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'category', default => 'general');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Map; #TODO: test
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'The F<&map()> macro will lookup each element within the array I<expr> in I<table> and setting that element to the looked up value. Returns an array of results. Non-existing key values will be mapped to null.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&map(E<lt> I<table> E<gt>, E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'map');
	use Class::STL::ClassMembers::Constructor;
	sub translate # -- fmt => 'table, input_field | output_field',
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("join");
		$c->open_block('(');
			$c->code("\"@{[ $self->configuration()->default_list_delimiter() ]}\",");
			$c->code("map");
			$c->open_block("(");
				$c->code("@{[ $_[0] =~ /^%/ ? '' : '%' ]}$_[0](\$_),");
				$c->code("split(\/\\s*@{[ $self->configuration()->default_list_delimiter() ]}\\s*\/,$_[1],-1)");
			$c->close_block(")");
		$c->close_block(")");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Unpack;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Unpacks the sequence of bytes in string I<expr> into a list using I<template>.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&unpack(E<lt> I<template> E<gt>, E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'unpack');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		my $delim = $self->configuration()->default_list_delimiter();
		$c->code("join('$delim', unpack($_[0], $_[1]))");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Pack;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Packs the values in the array I<expr> into a sequence of bytes, using the specified I<template>. Returns the sequence as a string.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&pack(E<lt> I<template> E<gt>, E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'pack');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("pack($_[0], @{[ join(',', @_[1..$#_]) ]})");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::InputRepeatValue;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns the current value for the repeating field number I<expr> as specified in the I<repeat_on_input> section.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&irval(E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'irval');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("\$_IRVAL_@{[ defined($_[0]) ? $_[0] : '1' ]}");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::OutputRepeatValue;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns the current value for the repeating field number I<expr> as specified in the I<repeat_on_output> section.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&orval(E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'orval');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("\$_ORVAL_@{[ defined($_[0]) ? $_[0] : '1' ]}");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Commify;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns the comma formatted number for the value in I<expr>.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&commify(E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'commify');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("do");
		$c->open_block();
			$c->code("my \$idec = index($_[0], '.');");
			$c->code("my \$dec = \$idec > 0 ? substr($_[0], \$idec) : '';");
			$c->code("my \$txt = reverse(\$idec > 0 ? substr($_[0], 0, \$idec) : $_[0]);");
			$c->code("\$txt =~ s/(\\d\\d\\d)(?=\\d)(?!\\d*\\.)/\$1,/g;");
			$c->code("(scalar reverse \$txt) . \$dec;");
		$c->close_block();
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Env; #TODO: test
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns the value for the environment variable as specified in I<expr>.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&env(E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'env');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("\$ENV{$_[0]}");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Configuration;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns the value for the configuration variable as specified in I<expr>.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&configuration(E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'configuration');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		#TODO: check exists
		#TODO: remove quote delimiters
		$c->code("q{@{[ $self->configuration()->exists($_[0])->value() ]}}");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::MatchAny;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns 1 if any one of the elements in array I<expr> matches the expression I<patt>. Otherwise returns 0.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&match_any(E<lt> I<patt> E<gt>, E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'match_any');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;
		my $c = $self->SUPER::translate(@_);
		$c->code("$_[0] =~ m/^(@{[ join('|', map(do{s/^[\"']?//; s/[\"']?$//; $_; },  @_[1..$#_])) ]})\$/ ? 1 : 0");
		return $c;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Match;
	use base qw(ETL::Pequel3::Type::Macros::MatchAny);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Returns 1 if any one of the elements in array I<expr> matches the expression I<patt>. Otherwise returns 0. (same as I<&match_any()>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&match(E<lt> I<patt> E<gt>, E<lt> I<expr> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'match');
	use Class::STL::ClassMembers::Constructor;
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::Type::Macros::Select;
	use base qw(ETL::Pequel3::Type::Macros::General::Abstract);
	use Class::STL::ClassMembers 
		Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Similar to a switch statement. Parameters consist of a list of expression-value pairs, followed by one default value. Each expression is evaluated in turn and the first to evaluate to true will return its associated valued, otherwise the default value is returned.'),
		Class::STL::ClassMembers::DataMember->new(name => 'usage', default => '&select(E<lt> I<expr> E<gt>, E<lt> I<value> E<gt> [, E<lt> I<expr> E<gt>, E<lt> I<value> E<gt> [, ...] ], E<lt> I<default> E<gt>)'),
		Class::STL::ClassMembers::DataMember->new(name => 'name', default => 'select');
	use Class::STL::ClassMembers::Constructor;
	sub translate
	{
		my $self = shift;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美二区乱c少妇| 国产人成亚洲第一网站在线播放 | 亚洲乱码日产精品bd| 午夜电影一区二区| 91网址在线看| 精品日韩欧美一区二区| 亚洲成人精品在线观看| 91在线精品一区二区三区| 久久精品人人做人人爽人人| 日本不卡中文字幕| 欧美亚洲国产bt| 亚洲精品久久久蜜桃| 粉嫩av一区二区三区在线播放| 在线观看91av| 五月天婷婷综合| 欧美三日本三级三级在线播放| 国产精品国产a| 国产成人99久久亚洲综合精品| 欧美大胆人体bbbb| 五月婷婷综合网| 欧美三区在线观看| 亚洲第一在线综合网站| 日本道色综合久久| 亚洲激情校园春色| 在线影视一区二区三区| 亚洲婷婷综合色高清在线| 成人综合婷婷国产精品久久 | 亚洲欧洲日韩女同| 国产成人精品免费在线| 精品乱码亚洲一区二区不卡| 免费日韩伦理电影| 日韩一二三区不卡| 国产麻豆精品theporn| 久久这里只有精品6| 国产乱码精品1区2区3区| 久久九九久久九九| 成人午夜视频在线| 国产精品电影一区二区| 97久久精品人人做人人爽| 最新热久久免费视频| 色综合久久久久综合99| 怡红院av一区二区三区| 欧美日韩一区二区三区视频| 视频一区在线视频| 精品国一区二区三区| 国产精品一区二区不卡| 亚洲欧美在线视频观看| 在线看不卡av| 日韩av成人高清| 26uuuu精品一区二区| 不卡一区在线观看| 亚洲电影一级黄| 久久嫩草精品久久久精品| 丁香婷婷综合色啪| 亚洲一级电影视频| 日韩色在线观看| 丁香激情综合国产| 一区二区三区四区av| 欧美一级日韩免费不卡| 国产精品一级片在线观看| 亚洲天堂中文字幕| 欧美一区二区三区小说| 国产99久久久国产精品潘金网站| 亚洲人成网站影音先锋播放| 欧美挠脚心视频网站| 国产91清纯白嫩初高中在线观看| 亚洲女性喷水在线观看一区| 日韩视频免费观看高清完整版 | 亚洲日本一区二区| 欧美一级理论片| 不卡av电影在线播放| 午夜久久久久久电影| 亚洲国产精品激情在线观看| 精品视频一区三区九区| 高清不卡在线观看| 日本欧美久久久久免费播放网| 国产精品美女www爽爽爽| 欧美日韩精品一二三区| 成人av网在线| 美女免费视频一区| 一区二区三区在线视频观看58| 亚洲精品一区二区三区精华液 | 中文字幕精品综合| 在线不卡中文字幕| 色综合亚洲欧洲| 国产乱码精品1区2区3区| 丝袜国产日韩另类美女| 亚洲综合男人的天堂| 国产三级精品三级| 26uuu精品一区二区在线观看| 在线观看三级视频欧美| 成人午夜碰碰视频| 国产剧情一区二区| 久久精品国产999大香线蕉| 一区二区三区四区高清精品免费观看 | 成人激情免费网站| 九九国产精品视频| 免费看日韩精品| 日本欧美一区二区在线观看| 亚洲国产精品久久人人爱| 国产精品久久福利| 亚洲国产精品ⅴa在线观看| 精品噜噜噜噜久久久久久久久试看| 欧美日韩大陆在线| 欧美日韩精品一区二区三区| 色丁香久综合在线久综合在线观看| 高潮精品一区videoshd| 粉嫩蜜臀av国产精品网站| 久久99精品国产.久久久久| 日本va欧美va瓶| 久久精品国产99国产精品| 日韩av中文字幕一区二区| 午夜精品影院在线观看| 亚洲一二三级电影| 首页国产欧美久久| 秋霞av亚洲一区二区三| 日本免费新一区视频| 青草av.久久免费一区| 另类人妖一区二区av| 老司机精品视频导航| 精品一区二区三区在线观看国产| 久久精品久久综合| 国产激情视频一区二区三区欧美 | 久久99精品久久久久久国产越南| 麻豆精品久久久| 国内精品不卡在线| 国产精品99久久久久久久女警 | 中文字幕在线一区免费| 亚洲欧美日韩国产另类专区| 一区二区三区精品视频在线| 亚洲成人av免费| 激情成人午夜视频| 国产不卡免费视频| 色国产精品一区在线观看| 欧美伦理视频网站| 久久久欧美精品sm网站| 中文字幕一区二区在线观看| 一区二区激情小说| 石原莉奈在线亚洲三区| 国产精品综合一区二区三区| 北岛玲一区二区三区四区| 在线一区二区视频| 精品久久久久久无| 亚洲女同一区二区| 美日韩黄色大片| 99视频一区二区| 欧美一区二区精美| 中文字幕视频一区| 日韩成人伦理电影在线观看| 国产一区二区导航在线播放| 91理论电影在线观看| 欧美一区二区三区四区五区 | 成人免费视频国产在线观看| 欧美午夜一区二区三区免费大片| 日韩欧美一区二区在线视频| 欧美激情在线一区二区三区| 香蕉成人啪国产精品视频综合网| 极品少妇一区二区| 欧美色图12p| 中文字幕国产一区| 免费观看91视频大全| 91麻豆国产在线观看| 精品毛片乱码1区2区3区| 亚洲一区二三区| 成人毛片在线观看| 欧美mv日韩mv国产网站app| 亚洲欧美在线观看| 国产一区二区影院| 在线播放国产精品二区一二区四区| 国产亚洲欧美在线| 久久99精品国产| 91精品国产色综合久久不卡电影| 国产日产欧产精品推荐色 | 欧美va在线播放| 亚洲一线二线三线视频| 成人av在线资源| 久久久五月婷婷| 蜜桃久久久久久久| 欧美日韩精品一区二区| 亚洲美女少妇撒尿| 成人h动漫精品一区二| 欧美精品一区二区三区视频| 污片在线观看一区二区| 色中色一区二区| 亚洲欧洲av色图| 成人污视频在线观看| 欧美精品一区二区精品网| 天天综合色天天| 欧美日韩aaa| 三级在线观看一区二区 | 欧美大片拔萝卜| 天堂久久一区二区三区| 欧美色偷偷大香| 午夜精品久久久久久久久久 | 成人性视频网站| 国产午夜亚洲精品午夜鲁丝片 | 美女视频黄久久| 欧美日韩国产经典色站一区二区三区| 亚洲特黄一级片| 色欧美片视频在线观看在线视频|