mirror of
https://github.com/starovoid/rxing.git
synced 2026-07-26 04:12:34 +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::{
|
||||
GeoResultParser, ISBNResultParser, ParsedClientResult, ParsedRXingResult, ProductResultParser,
|
||||
SMSMMSResultParser, TelResultParser, TextParsedRXingResult, URIResultParser, URLTOResultParser,
|
||||
WifiResultParser,
|
||||
WifiResultParser, BookmarkDoCoMoResultParser,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -103,8 +103,8 @@ pub fn getMassagedText(result: &RXingResult) -> String {
|
||||
}
|
||||
|
||||
pub fn parseRXingResult(theRXingResult: &RXingResult) -> ParsedClientResult {
|
||||
let PARSERS: [&ParserFunction; 8] = [
|
||||
// new BookmarkDoCoMoRXingResultParser(),
|
||||
let PARSERS: [&ParserFunction; 9] = [
|
||||
&BookmarkDoCoMoResultParser::parse,
|
||||
// new AddressBookDoCoMoRXingResultParser(),
|
||||
// new EmailDoCoMoRXingResultParser(),
|
||||
// new AddressBookAURXingResultParser(),
|
||||
@@ -392,3 +392,11 @@ pub fn matchSinglePrefixedField(
|
||||
}
|
||||
// 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 URIResultParser;
|
||||
mod URLTOResultParser;
|
||||
mod AbstractDoCoMoResultParser;
|
||||
mod BookmarkDoCoMoResultParser;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user