ライブラリ
- ビルトイン (1)
- csv (2)
- date (3)
- open-uri (2)
- openssl (4)
- optparse (5)
- psych (6)
-
rdoc
/ parser (3) -
rdoc
/ parser / c (1) -
rdoc
/ parser / ruby (1) -
rdoc
/ parser / simple (1) -
rexml
/ document (2) -
rexml
/ parsers / pullparser (1) -
rexml
/ parsers / sax2parser (1) -
rexml
/ parsers / streamparser (1) -
rexml
/ parsers / ultralightparser (1) - ripper (2)
- uri (2)
-
webrick
/ httpproxy (1)
クラス
- CSV (2)
- Date (2)
- DateTime (1)
-
OpenSSL
:: Config (1) -
OpenSSL
:: X509 :: Name (3) - OptionParser (4)
-
OptionParser
:: ParseError (1) -
Psych
:: Parser (1) -
RDoc
:: Parser (3) -
RDoc
:: Parser :: C (1) -
RDoc
:: Parser :: Ruby (1) -
RDoc
:: Parser :: Simple (1) -
REXML
:: Document (1) -
REXML
:: Parsers :: PullParser (1) -
REXML
:: Parsers :: SAX2Parser (1) -
REXML
:: Parsers :: StreamParser (1) -
REXML
:: Parsers :: UltraLightParser (1) -
REXML
:: Text (1) - Ripper (2)
-
URI
:: FTP (1) -
URI
:: Generic (1) -
WEBrick
:: HTTPProxyServer (1)
モジュール
- OpenURI (2)
- Psych (5)
-
RubyVM
:: AbstractSyntaxTree (1)
キーワード
-
_ parse (1) - accept (1)
-
alias
_ extension (1) -
can
_ parse (1) -
filter
_ backtrace (1) - load (1)
- new (15)
-
open
_ uri (2) -
parse
_ file (2) -
parse
_ line (1) -
parse
_ openssl (1) -
parse
_ rfc2253 (1) -
parse
_ stream (3) -
parser
_ for (1) - reject (1)
検索結果
先頭5件
- OpenSSL
:: X509 :: Name . parse(str , template=OBJECT _ TYPE _ TEMPLATE) -> OpenSSL :: X509 :: Name - OpenSSL
:: Config . parse(str) -> OpenSSL :: Config - CSV
. parse(str , options = Hash . new) {|row| . . . } -> nil - DateTime
. parse(str = & # 39;-4712-01-01T00:00:00+00:00& # 39; , complete = true , start = Date :: ITALY) -> DateTime - Psych
. parse(yaml , filename = nil) -> Psych :: Nodes :: Document
-
OpenSSL
:: X509 :: Name . parse(str , template=OBJECT _ TYPE _ TEMPLATE) -> OpenSSL :: X509 :: Name (63946.0) -
文字列をパースして OpenSSL::X509::Name オブジェクトを返します。
文字列をパースして OpenSSL::X509::Name オブジェクトを返します。
例:
require 'openssl'
OpenSSL::X509::Name.parse('/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp')
@param str パースする文字列
@param template 属性型に対応するデータ型を表わすハッシュ -
OpenSSL
:: Config . parse(str) -> OpenSSL :: Config (63607.0) -
文字列から OpenSSL::Config オブジェクトを生成します。
文字列から OpenSSL::Config オブジェクトを生成します。
@param str 設定ファイルデータ -
CSV
. parse(str , options = Hash . new) {|row| . . . } -> nil (54664.0) -
このメソッドは文字列を簡単にパースすることができます。 ブロックを与えた場合は、ブロックにそれぞれの行を渡します。 ブロックを省略した場合は、配列の配列を返します。
このメソッドは文字列を簡単にパースすることができます。
ブロックを与えた場合は、ブロックにそれぞれの行を渡します。
ブロックを省略した場合は、配列の配列を返します。
@param str 文字列を指定します。
@param options CSV.new のオプションと同じオプションを指定できます。
//emlist[例][ruby]{
require 'csv'
require 'pp'
s = <<EOS
id,first name,last name,age
1,taro,tanaka,20
2,jiro,suzuki,18
EOS
pp CSV.parse(s)
# => ... -
DateTime
. parse(str = & # 39;-4712-01-01T00:00:00+00:00& # 39; , complete = true , start = Date :: ITALY) -> DateTime (54661.0) -
与えられた日時表現を解析し、 その情報に基づいて DateTime オブジェクトを生成します。
与えられた日時表現を解析し、
その情報に基づいて DateTime オブジェクトを生成します。
年が "00" から "99" の範囲であれば、
年の下2桁表現であるとみなしこれを補います。
この振舞いを抑止したい場合は、ヒントとして、complete に false を与えます。
@param str 日時をあらわす文字列
@param complete 年を補完するか
@param start グレゴリオ暦をつかい始めた日をあらわすユリウス日
@raise ArgumentError 正しくない日時になる組み合わせである場合に発生します。
例:
require 'date'
... -
Psych
. parse(yaml , filename = nil) -> Psych :: Nodes :: Document (54643.0) -
YAML ドキュメントをパースし、YAML の AST を返します。
YAML ドキュメントをパースし、YAML の AST を返します。
入力に複数のドキュメントが含まれている場合は、先頭のものを AST に変換して
返します。
filename はパース中に発生した例外のメッセージに用います。
AST については Psych::Nodes を参照してください。
@param yaml YAML ドキュメント(文字列 or IO オブジェクト)
@param filename Psych::SyntaxError 発生時にファイル名として表示する文字列。
@raise Psych::SyntaxError YAMLドキュメントに文法エラーが発見されたと... -
Date
. parse(str = & # 39;-4712-01-01& # 39; , complete = true , start = Date :: ITALY) -> Date (54625.0) -
与えられた日付表現を解析し、 その情報に基づいて日付オブジェクトを生成します。
与えられた日付表現を解析し、
その情報に基づいて日付オブジェクトを生成します。
年が "00" から "99" の範囲であれば、
年の下2桁表現であるとみなしこれを補います。
この振舞いを抑止したい場合は、ヒントとして、complete に false を与えます。
Date._parse も参照してください。
@param str 日付をあらわす文字列
@param complete 年を補完するか
@param start グレゴリオ暦をつかい始めた日をあらわすユリウス日
@raise Date::Error 正しくない日付になる組み合わせである場合に発生します。 -
Ripper
. parse(src , filename = & # 39;(ripper)& # 39; , lineno = 1) -> nil (54625.0) -
指定された文字列を解析します。常に nil を返します。
指定された文字列を解析します。常に nil を返します。
@param src Ruby プログラムを文字列か IO オブジェクトで指定します。
@param filename src のファイル名を文字列で指定します。省略すると "(ripper)" になります。
@param lineno src の開始行番号を指定します。省略すると 1 になります。
@see Ripper#parse -
CSV
. parse _ line(line , options = Hash . new) -> Array (36961.0) -
このメソッドは一行の CSV 文字列を配列に変換するためのショートカットです。
このメソッドは一行の CSV 文字列を配列に変換するためのショートカットです。
@param line 文字列を指定します。複数行の文字列を指定した場合は、一行目以外は無視します。
@param options CSV.new のオプションと同じオプションを指定できます。
//emlist[例][ruby]{
require 'csv'
p CSV.parse_line("1,taro,tanaka,20")
# => ["1", "taro", "tanaka", "20"]
p CSV.parse_line("1|taro|tanaka|20", col_sep: '|')
#... -
Psych
. parse _ file(filename) -> Psych :: Nodes :: Document (36907.0) -
filename で指定したファイルをパースして YAML の AST を返します。
filename で指定したファイルをパースして YAML の AST を返します。
@param filename パースするファイルの名前
@raise Psych::SyntaxError YAMLドキュメントに文法エラーが発見されたときに発生します -
OpenSSL
:: X509 :: Name . parse _ openssl(str , template=OBJECT _ TYPE _ TEMPLATE) -> OpenSSL :: X509 :: Name (36646.0) -
文字列をパースして OpenSSL::X509::Name オブジェクトを返します。
文字列をパースして OpenSSL::X509::Name オブジェクトを返します。
例:
require 'openssl'
OpenSSL::X509::Name.parse('/C=JP/ST=Kanagawa/L=Yokohama/O=Example Company/OU=Lab3/CN=foobar/emailAddress=foobar@lab3.example.co.jp')
@param str パースする文字列
@param template 属性型に対応するデータ型を表わすハッシュ -
RubyVM
:: AbstractSyntaxTree . parse _ file(pathname) -> RubyVM :: AbstractSyntaxTree :: Node (36643.0) -
pathname のファイルを読み込み、その内容を抽象構文木にパースし、その木の根ノードを返します。
pathname のファイルを読み込み、その内容を抽象構文木にパースし、その木の根ノードを返します。
@param pathname パースする対象のファイルパスを指定します
@raise SyntaxError pathname から取得された文字列が Ruby のコードとして正しくない場合に発生します。
//emlist[][ruby]{
pp RubyVM::AbstractSyntaxTree.parse_file(__FILE__)
# => (SCOPE@1:0-1:50
# tbl: []
# args: nil
# body:
# (F... -
OptionParser
:: ParseError . filter _ backtrace(array) -> [String] (36304.0) -
array で指定されたバックトレースから optparse ライブラリに関する行を除 外します。
array で指定されたバックトレースから optparse ライブラリに関する行を除
外します。
デバッグモード($DEBUGが真)の場合は何もしません。
@param array バックトレースを文字列の配列で指定します。
@return array を返します。 -
RDoc
:: Parser . parser _ for(top _ level , file _ name , body , options , stats) -> RDoc :: Parser (28204.0) -
file_name を解析できるパーサのインスタンスを返します。 見つからなかった場合は RDoc::Parser::Simple のインスタンスを返します。
file_name を解析できるパーサのインスタンスを返します。
見つからなかった場合は RDoc::Parser::Simple のインスタンスを返します。
@param top_level RDoc::TopLevel オブジェクトを指定します。
@param file_name ファイル名を文字列で指定します。
@param body ソースコードの内容を文字列で指定します。
@param options RDoc::Options オブジェクトを指定します。
@param stats RDoc::Stats オブジェクトを指定します。 -
OpenSSL
:: X509 :: Name . parse _ rfc2253(str , template=OBJECT _ TYPE _ TEMPLATE) -> OpenSSL :: X509 :: Name (27907.0) -
RFC2253形式の文字列を パースして OpenSSL::X509::Name オブジェクトを返します。
RFC2253形式の文字列を
パースして OpenSSL::X509::Name オブジェクトを返します。
@param str パースする文字列
@param template 属性型に対応するデータ型を表わすハッシュ -
RDoc
:: Parser . can _ parse(file _ name) -> RDoc :: Parser | nil (27907.0) -
file_name を解析できるパーサクラスを返します。見つからなかった場合は nil を返します。
file_name を解析できるパーサクラスを返します。見つからなかった場合は
nil を返します。
@param file_name 解析するファイルの名前を指定します。 -
REXML
:: Parsers :: PullParser . new(stream) -> REXML :: Parsers :: PullParser (27904.0) -
新たな PullParser オブジェクトを生成して返します。
新たな PullParser オブジェクトを生成して返します。
@param source 入力(文字列、IO、IO互換オブジェクト(StringIOなど)) -
REXML
:: Parsers :: SAX2Parser . new(source) -> REXML :: Parsers :: SAX2Parser (27904.0) -
SAX2 パーサオブジェクトを生成します。
SAX2 パーサオブジェクトを生成します。
@param source 入力(文字列、IO、IO互換オブジェクト(StringIOなど)) -
REXML
:: Parsers :: StreamParser . new(source , listener) -> REXML :: Parsers :: StreamParser (27904.0) -
ストリームパーサオブジェクトを生成します。
ストリームパーサオブジェクトを生成します。
@param source 入力(文字列、IO、IO互換オブジェクト(StringIOなど))
@param listener コールバックオブジェクト -
REXML
:: Parsers :: UltraLightParser . new(stream) -> REXML :: Parsers :: UltraLightParser (27904.0) -
パーサオブジェクトを返します。
パーサオブジェクトを返します。
@param stream 入力(文字列、IO、IO互換オブジェクト(StringIOなど)) -
REXML
:: Document . parse _ stream(source , listener) -> () (27625.0) -
XML文書を source から読み込み、パースした結果を listener にコールバックで伝えます。
XML文書を source から読み込み、パースした結果を
listener にコールバックで伝えます。
このメソッドは
Parsers::StreamParser.new( source, listener ).parse
と同じ挙動をします。
コールバックの詳しい仕組みなどについては REXML::Parsers::StreamParser
および REXML::StreamListener を参照してください。
@param source 入力(文字列、IO、IO互換オブジェクト(StringIOなど))
@param listener コールバックオブジェクト -
RDoc
:: Parser . alias _ extension(old _ ext , new _ ext) -> bool (27304.0) -
old_ext に登録されたパーサを new_ext でも解析できるようにエイリアスを登 録します。
old_ext に登録されたパーサを new_ext でも解析できるようにエイリアスを登
録します。
@param old_ext 拡張子を文字列で指定します。
@param new_ext 拡張子を文字列で指定します。
@return エイリアスが登録された場合は true を返します。old_ext にパーサ
が登録されていない場合、エイリアスが登録されずに false を返しま
す。 -
RDoc
:: Parser :: Simple . new(top _ level , file _ name , body , options , stats) -> RDoc :: Parser :: Simple (19204.0) -
自身を初期化します。
自身を初期化します。
@param top_level RDoc::TopLevel オブジェクトを指定します。
@param file_name ファイル名を文字列で指定します。
@param body 内容を文字列で指定します。
@param options RDoc::Options オブジェクトを指定します。
@param stats RDoc::Stats オブジェクトを指定します。 -
Date
. _ parse(str , complete = true) -> Hash (18673.0) -
このメソッドは Date.parse と似ていますが、日付オブジェクトを生成せずに、 見いだした要素をハッシュで返します。
このメソッドは Date.parse と似ていますが、日付オブジェクトを生成せずに、
見いだした要素をハッシュで返します。
Date.parse も参照してください。
@param str 日付をあらわす文字列
@param complete 年を補完するか -
Psych
. parse _ stream(yaml) -> Psych :: Nodes :: Stream (18628.0) -
YAML ドキュメントをパースします。 yaml が 複数の YAML ドキュメントを含む場合を取り扱うことができます。
YAML ドキュメントをパースします。
yaml が 複数の YAML ドキュメントを含む場合を取り扱うことができます。
ブロックなしの場合は YAML の AST (すべての YAML ドキュメントを
保持した Psych::Nodes::Stream オブジェクト)を返します。
ブロック付きの場合は、そのブロックに最初の YAML ドキュメント
の Psych::Nodes::Document オブジェクトが渡されます。
この場合の返り値には意味がありません。
@see Psych::Nodes
//emlist[例][ruby]{
Psych.parse_stream("--... -
Psych
. parse _ stream(yaml) {|node| . . . } -> () (18628.0) -
YAML ドキュメントをパースします。 yaml が 複数の YAML ドキュメントを含む場合を取り扱うことができます。
YAML ドキュメントをパースします。
yaml が 複数の YAML ドキュメントを含む場合を取り扱うことができます。
ブロックなしの場合は YAML の AST (すべての YAML ドキュメントを
保持した Psych::Nodes::Stream オブジェクト)を返します。
ブロック付きの場合は、そのブロックに最初の YAML ドキュメント
の Psych::Nodes::Document オブジェクトが渡されます。
この場合の返り値には意味がありません。
@see Psych::Nodes
//emlist[例][ruby]{
Psych.parse_stream("--... -
Psych
. load(yaml , filename: nil , fallback: false , symbolize _ names: false) -> object (18322.0) -
YAML ドキュメントを Ruby のデータ構造(オブジェクト)に変換します。
YAML ドキュメントを Ruby のデータ構造(オブジェクト)に変換します。
入力に複数のドキュメントが含まれている場合は、先頭のものを変換して
返します。
filename はパース中に発生した例外のメッセージに用います。
@param yaml YAML ドキュメント(文字列 or IO オブジェクト)
@param filename Psych::SyntaxError 発生時にファイル名として表示する文字列。
@param fallback 引数 yaml に空のYAMLを指定した場合の戻り値を指定します。デフォルトは false です。
@param symbolize_... -
Psych
:: Parser . new(handler = Handler . new) -> Psych :: Parser (9904.0) -
新たなパーサオブジェクトを生成して返します。
新たなパーサオブジェクトを生成して返します。
handler で YAML のイベントを処理するハンドラを指定します。
詳しくは Psych::Parser を参照してください。
@param handler YAML のイベントを処理するハンドラ -
RDoc
:: Parser :: C . new(top _ level , file _ name , body , options , stats) -> RDoc :: Parser :: C (9904.0) -
自身を初期化します。
自身を初期化します。
@param top_level RDoc::TopLevel オブジェクトを指定します。
@param file_name ファイル名を文字列で指定します。
@param body ソースコードの内容を文字列で指定します。
@param options RDoc::Options オブジェクトを指定します。
@param stats RDoc::Stats オブジェクトを指定します。 -
RDoc
:: Parser :: Ruby . new(top _ level , file _ name , body , options , stats) -> RDoc :: Parser :: Ruby (9904.0) -
自身を初期化します。
自身を初期化します。
@param top_level RDoc::TopLevel オブジェクトを指定します。
@param file_name ファイル名を文字列で指定します。
@param body ソースコードの内容を文字列で指定します。
@param options RDoc::Options オブジェクトを指定します。
@param stats RDoc::Stats オブジェクトを指定します。 -
OptionParser
. new(banner = nil , width = 32 , indent = & # 39; & # 39; * 4) -> OptionParser (9622.0) -
OptionParser オブジェクトを生成して返します。
OptionParser オブジェクトを生成して返します。
ブロックが与えられた場合、生成した OptionParser オブジェクトを引数としてブロックを評
価します。つまり、以下のような書き方が可能です。
//emlist[][ruby]{
require 'optparse'
OptionParser.new do |opt|
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
opt.parse!(ARGV)
end
//}
@param banner ヘルプ(サマリ)の最初の部分に表示される、アプリケーションの説明な... -
OptionParser
. new(banner = nil , width = 32 , indent = & # 39; & # 39; * 4) {|opt| . . . } -> OptionParser (9622.0) -
OptionParser オブジェクトを生成して返します。
OptionParser オブジェクトを生成して返します。
ブロックが与えられた場合、生成した OptionParser オブジェクトを引数としてブロックを評
価します。つまり、以下のような書き方が可能です。
//emlist[][ruby]{
require 'optparse'
OptionParser.new do |opt|
opt.on('-a') {|v| p v }
opt.on('-b') {|v| p v }
opt.parse!(ARGV)
end
//}
@param banner ヘルプ(サマリ)の最初の部分に表示される、アプリケーションの説明な... -
OptionParser
. reject(klass) -> () (9394.0) -
OptionParser.accept メソッドで登録したブロックを削除します。
OptionParser.accept メソッドで登録したブロックを削除します。
@param klass 削除したいクラスオブジェクトを指定します。
//emlist[例][ruby]{
require "optparse"
require "time"
def parse(option_parser)
option_parser.on("-t", "--time [TIME]", Time) do |time|
p time.class
end
option_parser.parse(ARGV)
end
OptionParser.accept(Time) do... -
OptionParser
. accept(klass , pat = / . * / ) {|str| . . . } -> () (9340.0) -
オプションの引数を文字列から Ruby のオブジェクトに変換するための ブロックを登録します。すべての OptionParser インスタンスに共通です。
オプションの引数を文字列から Ruby のオブジェクトに変換するための
ブロックを登録します。すべての OptionParser インスタンスに共通です。
ブロックには、文字列として与えられるオプションの引数から klass のインスタンスを生成して返すものを指定します。
OptionParser#on で klass を指定した場合、
コマンドラインのオプションに与えられた引数は、この accept で登録したブロックで
klass のインスタンスに変換されてから、OptionParser#on メソッドで登録したブロックに渡されます。
//emlist[][ruby]{
requi... -
REXML
:: Text . new(arg , respect _ whitespace = false , parent = nil , raw = nil , entity _ filter = nil , illegal = REXML :: Text :: NEEDS _ A _ SECOND _ CHECK) (9322.0) -
テキストノードオブジェクトを生成します。
テキストノードオブジェクトを生成します。
arg でノードの内容を指定します。
文字列の場合はそれが内容として使われます。
REXML::Text オブジェクトの場合はその内容が複製されます。
respect_whitespace に真を指定すると、arg に含まれる空白文字は保存されます。
偽の場合は空白はまとめられます。
raw は true, false, nil のいずれかを指定し、生成されるテキストノードが
raw モードであるかどうかを決めます。
true の場合、そのノードは raw モードであると解釈され、
テキストにはエスケープされていないXMLマークアップは
含まれ... -
URI
:: Generic . new(scheme , userinfo , host , port , registry , path , opaque , query , fragment , parser = URI :: DEFAULT _ PARSER , arg _ check = false) -> URI :: Generic (904.0) -
各引数を成分とする URI::Generic オブジェクトを生成して返します。
各引数を成分とする URI::Generic オブジェクトを生成して返します。
@param scheme 構成要素 scheme を表す文字列を与えます。
@param userinfo 構成要素を表す文字列を与えます。
@param host 構成要素を表す文字列を与えます。
@param port 構成要素を表す文字列を与えます。
@param registry 構成要素を表す文字列を与えます。
@param path 構成要素を表す文字列を与えます。
@param opaque 構成要素を表す文字列を与えます。
@param query 構成要素を表す文字列を与えます... -
Ripper
. new(src , filename = "(ripper)" , lineno = 1) -> Ripper (358.0) -
Ripper オブジェクトを作成します。
Ripper オブジェクトを作成します。
@param src Ruby プログラムを文字列か IO オブジェクトで指定します。
@param filename src のファイル名を文字列で指定します。省略すると "(ripper)" になります。
@param lineno src の開始行番号を指定します。省略すると 1 になります。
src の解析を行うには更に Ripper#parse などの呼び出しが必要です。
@see Ripper.parse, Ripper#parse -
OpenURI
. open _ uri(name , mode = & # 39;r& # 39; , perm = nil , options = {}) -> StringIO (340.0) -
URI である文字列 name のリソースを取得して StringIO オブジェクト として返します。
URI である文字列 name のリソースを取得して StringIO オブジェクト
として返します。
ブロックを与えた場合は StringIO オブジェクトを引数としてブロックを
評価します。ブロックの終了時に StringIO は close されます。nil を返します。
require 'open-uri'
sio = OpenURI.open_uri('http://www.example.com')
p sio.last_modified
puts sio.read
OpenURI.open_uri('http://www.example.com'){|... -
OpenURI
. open _ uri(name , mode = & # 39;r& # 39; , perm = nil , options = {}) {|sio| . . . } -> nil (340.0) -
URI である文字列 name のリソースを取得して StringIO オブジェクト として返します。
URI である文字列 name のリソースを取得して StringIO オブジェクト
として返します。
ブロックを与えた場合は StringIO オブジェクトを引数としてブロックを
評価します。ブロックの終了時に StringIO は close されます。nil を返します。
require 'open-uri'
sio = OpenURI.open_uri('http://www.example.com')
p sio.last_modified
puts sio.read
OpenURI.open_uri('http://www.example.com'){|... -
URI
:: FTP . new(scheme , userinfo , host , port , registry , path , opaque , query , fragment , arg _ check = false) -> URI :: FTP (322.0) -
汎用的な構成要素から URI::FTP オブジェクトを生成します。build と異なり、デフォルトでは引数の正当性を検査しません。
汎用的な構成要素から URI::FTP オブジェクトを生成します。build
と異なり、デフォルトでは引数の正当性を検査しません。
例:
require 'uri'
p ftp = URI.parse("ftp://ftp.ruby-lang.org/pub/ruby/;type=d")
p ftp.typecode
#=> #<URI::FTP:0x2010029c URL:ftp://ftp.ruby-lang.org/pub/ruby/;type=d>
#=> "d"
@param scheme 構成要素を表す文字列を与えます。
@param userinfo... -
WEBrick
:: HTTPProxyServer . new(config , default = WEBrick :: Config :: HTTP) -> WEBrick :: HTTPProxyServer (322.0) -
プロクシオブジェクトを生成して返します。
プロクシオブジェクトを生成して返します。
@param config 設定を保存したハッシュを指定します。
設定として有効なハッシュのキーとその値は WEBrick::HTTPServer.new と同じです。
それに加えて以下のキーが有効です。
: :ProxyAuthProc
プロクシ認証を行う Proc オブジェクトを指定します。この proc は
WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として
proc.call(req, res) ...