class FeedsExJsonPathLines in Feeds extensible parsers 7
Same name and namespace in other branches
- 7.2 src/FeedsExJsonPathLines.inc \FeedsExJsonPathLines
Parses the JSON Lines format via JSONPath.
Hierarchy
- class \FeedsExBase extends \FeedsParser
- class \FeedsExJsonPath
- class \FeedsExJsonPathLines
- class \FeedsExJsonPath
Expanded class hierarchy of FeedsExJsonPathLines
3 string references to 'FeedsExJsonPathLines'
- FeedsExJsonPathLines.test in src/
Tests/ FeedsExJsonPathLines.test - feeds_ex_feeds_plugins in ./
feeds_ex.feeds.inc - Implements hook_feeds_plugins().
- feeds_ex_update_7102 in ./
feeds_ex.install - Checks if for any importers libraries got missing.
File
- src/
FeedsExJsonPathLines.inc, line 11 - Contains FeedsExJsonPathLines.
View source
class FeedsExJsonPathLines extends FeedsExJsonPath {
/**
* The file iterator.
*
* @var FeedsExLineIterator
*/
protected $iterator;
/**
* {@inheritdoc}
*/
protected function hasConfigurableContext() {
return FALSE;
}
/**
* {@inheritdoc}
*/
protected function setUp(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
$this->iterator = new FeedsExLineIterator($fetcher_result
->getFilePath());
if (!$this->iterator
->getSize()) {
throw new FeedsExEmptyException();
}
$this->iterator
->setLineLimit($source->importer
->getLimit());
$state = $source
->state(FEEDS_PARSE);
if (!$state->total) {
$state->total = $this->iterator
->getSize();
}
$this->iterator
->setStartPosition((int) $state->pointer);
}
/**
* {@inheritdoc}
*/
protected function parseItems(FeedsSource $source, FeedsFetcherResult $fetcher_result, FeedsParserResult $result) {
$expressions = $this
->prepareExpressions();
$variable_map = $this
->prepareVariables($expressions);
foreach ($this->iterator as $row) {
$row = $this
->getEncoder()
->convertEncoding($row);
try {
$row = FeedsExJsonUtility::decodeJsonArray($row);
} catch (RuntimeException $e) {
// An array wasn't returned. Skip this item.
continue;
}
if ($item = $this
->executeSources($row, $expressions, $variable_map)) {
$result->items[] = $item;
}
}
}
/**
* {@inheritdoc}
*/
protected function cleanUp(FeedsSource $source, FeedsParserResult $result) {
$source
->state(FEEDS_PARSE)->pointer = $this->iterator
->ftell();
unset($this->iterator);
parent::cleanUp($source, $result);
}
/**
* {@inheritdoc}
*/
protected function executeSourceExpression($machine_name, $expression, $row) {
$result = $this
->getParser()
->search($row, $expression);
if (is_scalar($result)) {
return $result;
}
// Return a single value if there's only one value.
return count($result) === 1 ? reset($result) : $result;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
FeedsExBase:: |
protected | property | The encoder used to convert encodings. | |
FeedsExBase:: |
protected | property | The class used as the text encoder. | 1 |
FeedsExBase:: |
protected | property | The object used to display messages to the user. | |
FeedsExBase:: |
public | function | 1 | |
FeedsExBase:: |
public | function | 1 | |
FeedsExBase:: |
protected | function | Returns a form element for a specific column. | 1 |
FeedsExBase:: |
protected | function | Reuturns the list of table headers. | 1 |
FeedsExBase:: |
public | function | 1 | |
FeedsExBase:: |
protected | function | Renders our debug messages into a list. | |
FeedsExBase:: |
protected | function | Executes the source expressions. | |
FeedsExBase:: |
public | function | Returns the encoder. | |
FeedsExBase:: |
protected | function | Returns the configuration form table header. | |
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
public | function | Returns the messenger. | |
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
protected | function | Logs errors. | |
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
protected | function | Prepares the expressions for parsing. | |
FeedsExBase:: |
protected | function | Prepares the raw string for parsing. | |
FeedsExBase:: |
protected | function | Prepares the variable map used to substitution. | |
FeedsExBase:: |
protected | function | Prints errors to the screen. | |
FeedsExBase:: |
public | function | Sets the encoder. | |
FeedsExBase:: |
public | function | Sets the messenger to be used to display messages. | |
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
public | function | ||
FeedsExBase:: |
protected | function | Stops internal error handling. | 1 |
FeedsExJsonPath:: |
protected | property | The JSONPath parser implementation. | |
FeedsExJsonPath:: |
protected | function |
Returns rows to be parsed. Overrides FeedsExBase:: |
|
FeedsExJsonPath:: |
protected | function |
Returns the errors after parsing. Overrides FeedsExBase:: |
|
FeedsExJsonPath:: |
protected | function | Returns the JSONPath parser. | |
FeedsExJsonPath:: |
protected | function |
Loads the necessary library. Overrides FeedsExBase:: |
|
FeedsExJsonPath:: |
protected | function |
Starts internal error handling. Overrides FeedsExBase:: |
|
FeedsExJsonPath:: |
protected | function |
Validates an expression. Overrides FeedsExBase:: |
|
FeedsExJsonPathLines:: |
protected | property | The file iterator. | |
FeedsExJsonPathLines:: |
protected | function |
Allows subclasses to cleanup after parsing. Overrides FeedsExJsonPath:: |
|
FeedsExJsonPathLines:: |
protected | function |
Executes a single source expression. Overrides FeedsExJsonPath:: |
|
FeedsExJsonPathLines:: |
protected | function |
Returns whether or not this parser uses a context query. Overrides FeedsExBase:: |
|
FeedsExJsonPathLines:: |
protected | function |
Performs the actual parsing. Overrides FeedsExBase:: |
|
FeedsExJsonPathLines:: |
protected | function |
Allows subclasses to prepare for parsing. Overrides FeedsExBase:: |