mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-27 04:42:35 +00:00
DoCoMo bookmark link pass
This commit is contained in:
@@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2007 ZXing authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.google.zxing.client.result;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>See
|
|
||||||
* <a href="http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/about/s2.html">
|
|
||||||
* DoCoMo's documentation</a> about the result types represented by subclasses of this class.</p>
|
|
||||||
*
|
|
||||||
* <p>Thanks to Jeff Griffin for proposing rewrite of these classes that relies less
|
|
||||||
* on exception-based mechanisms during parsing.</p>
|
|
||||||
*
|
|
||||||
* @author Sean Owen
|
|
||||||
*/
|
|
||||||
abstract class AbstractDoCoMoRXingResultParser extends RXingResultParser {
|
|
||||||
|
|
||||||
static String[] matchDoCoMoPrefixedField(String prefix, String rawText) {
|
|
||||||
return matchPrefixedField(prefix, rawText, ';', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
static String matchSingleDoCoMoPrefixedField(String prefix, String rawText, boolean trim) {
|
|
||||||
return matchSinglePrefixedField(prefix, rawText, ';', trim);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
39
src/client/result/AbstractDoCoMoResultParser.rs
Normal file
39
src/client/result/AbstractDoCoMoResultParser.rs
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
// /*
|
||||||
|
// * Copyright 2007 ZXing authors
|
||||||
|
// *
|
||||||
|
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// * you may not use this file except in compliance with the License.
|
||||||
|
// * You may obtain a copy of the License at
|
||||||
|
// *
|
||||||
|
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
// *
|
||||||
|
// * Unless required by applicable law or agreed to in writing, software
|
||||||
|
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// * See the License for the specific language governing permissions and
|
||||||
|
// * limitations under the License.
|
||||||
|
// */
|
||||||
|
|
||||||
|
// package com.google.zxing.client.result;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * <p>See
|
||||||
|
// * <a href="http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/about/s2.html">
|
||||||
|
// * DoCoMo's documentation</a> about the result types represented by subclasses of this class.</p>
|
||||||
|
// *
|
||||||
|
// * <p>Thanks to Jeff Griffin for proposing rewrite of these classes that relies less
|
||||||
|
// * on exception-based mechanisms during parsing.</p>
|
||||||
|
// *
|
||||||
|
// * @author Sean Owen
|
||||||
|
// */
|
||||||
|
// abstract class AbstractDoCoMoRXingResultParser extends RXingResultParser {
|
||||||
|
|
||||||
|
// static String[] matchDoCoMoPrefixedField(String prefix, String rawText) {
|
||||||
|
// return matchPrefixedField(prefix, rawText, ';', true);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// static String matchSingleDoCoMoPrefixedField(String prefix, String rawText, boolean trim) {
|
||||||
|
// return matchSinglePrefixedField(prefix, rawText, ';', trim);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2007 ZXing authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.google.zxing.client.result;
|
|
||||||
|
|
||||||
import com.google.zxing.RXingResult;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sean Owen
|
|
||||||
*/
|
|
||||||
public final class BookmarkDoCoMoRXingResultParser extends AbstractDoCoMoRXingResultParser {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public URIParsedRXingResult parse(RXingResult result) {
|
|
||||||
String rawText = result.getText();
|
|
||||||
if (!rawText.startsWith("MEBKM:")) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
String title = matchSingleDoCoMoPrefixedField("TITLE:", rawText, true);
|
|
||||||
String[] rawUri = matchDoCoMoPrefixedField("URL:", rawText);
|
|
||||||
if (rawUri == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
String uri = rawUri[0];
|
|
||||||
return URIRXingResultParser.isBasicallyValidURI(uri) ? new URIParsedRXingResult(uri, title) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
52
src/client/result/BookmarkDoCoMoResultParser.rs
Normal file
52
src/client/result/BookmarkDoCoMoResultParser.rs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2007 ZXing authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// package com.google.zxing.client.result;
|
||||||
|
|
||||||
|
// import com.google.zxing.RXingResult;
|
||||||
|
|
||||||
|
use crate::RXingResult;
|
||||||
|
|
||||||
|
use super::{
|
||||||
|
ParsedClientResult, ResultParser, URIParsedRXingResult, URIParsedResult, URIResultParser,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Sean Owen
|
||||||
|
*/
|
||||||
|
pub fn parse(result: &RXingResult) -> Option<ParsedClientResult> {
|
||||||
|
let rawText = result.getText();
|
||||||
|
if !rawText.starts_with("MEBKM:") {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let title = ResultParser::match_single_do_co_mo_prefixed_field("TITLE:", rawText, true);
|
||||||
|
let rawUri = ResultParser::match_do_co_mo_prefixed_field("URL:", rawText);
|
||||||
|
if rawUri.is_none() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
let uri = rawUri?[0].clone();
|
||||||
|
if URIResultParser::is_basically_valid_uri(&uri) {
|
||||||
|
Some(ParsedClientResult::URIResult(URIParsedRXingResult::new(
|
||||||
|
uri, title.unwrap_or("".to_owned()),
|
||||||
|
)))
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
// return URIRXingResultParser.isBasicallyValidURI(uri) ? new URIParsedRXingResult(uri, title) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// }
|
||||||
@@ -36,7 +36,7 @@ use crate::{exceptions::Exceptions, RXingResult};
|
|||||||
use super::{
|
use super::{
|
||||||
GeoResultParser, ISBNResultParser, ParsedClientResult, ParsedRXingResult, ProductResultParser,
|
GeoResultParser, ISBNResultParser, ParsedClientResult, ParsedRXingResult, ProductResultParser,
|
||||||
SMSMMSResultParser, TelResultParser, TextParsedRXingResult, URIResultParser, URLTOResultParser,
|
SMSMMSResultParser, TelResultParser, TextParsedRXingResult, URIResultParser, URLTOResultParser,
|
||||||
WifiResultParser,
|
WifiResultParser, BookmarkDoCoMoResultParser,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -103,8 +103,8 @@ pub fn getMassagedText(result: &RXingResult) -> String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn parseRXingResult(theRXingResult: &RXingResult) -> ParsedClientResult {
|
pub fn parseRXingResult(theRXingResult: &RXingResult) -> ParsedClientResult {
|
||||||
let PARSERS: [&ParserFunction; 8] = [
|
let PARSERS: [&ParserFunction; 9] = [
|
||||||
// new BookmarkDoCoMoRXingResultParser(),
|
&BookmarkDoCoMoResultParser::parse,
|
||||||
// new AddressBookDoCoMoRXingResultParser(),
|
// new AddressBookDoCoMoRXingResultParser(),
|
||||||
// new EmailDoCoMoRXingResultParser(),
|
// new EmailDoCoMoRXingResultParser(),
|
||||||
// new AddressBookAURXingResultParser(),
|
// new AddressBookAURXingResultParser(),
|
||||||
@@ -392,3 +392,11 @@ pub fn matchSinglePrefixedField(
|
|||||||
}
|
}
|
||||||
// return matches == null ? null : matches[0];
|
// return matches == null ? null : matches[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn match_do_co_mo_prefixed_field( prefix:&str, raw_text:&str) -> Option<Vec<String>> {
|
||||||
|
matchPrefixedField(prefix, raw_text, ';', true)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn match_single_do_co_mo_prefixed_field( prefix:&str, raw_text:&str, trim:bool) -> Option<String>{
|
||||||
|
matchSinglePrefixedField(prefix, raw_text, ';', trim)
|
||||||
|
}
|
||||||
@@ -17,6 +17,8 @@ mod ProductResultParser;
|
|||||||
mod URIParsedResult;
|
mod URIParsedResult;
|
||||||
mod URIResultParser;
|
mod URIResultParser;
|
||||||
mod URLTOResultParser;
|
mod URLTOResultParser;
|
||||||
|
mod AbstractDoCoMoResultParser;
|
||||||
|
mod BookmarkDoCoMoResultParser;
|
||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user