Skip to content
This repository has been archived by the owner on Apr 16, 2020. It is now read-only.

Commit

Permalink
read metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
mseemann committed Oct 22, 2015
1 parent 7759946 commit b069b99
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 6 deletions.
4 changes: 4 additions & 0 deletions Example/Pods/Pods.xcodeproj/project.pbxproj

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Example/Tests/JsonReaderTest.swift
Expand Up @@ -122,7 +122,7 @@ class JsonReaderTest: QuickSpec {
self.test(tokenizer, testJH: testJH, jsonString: "{\"a\":[\"\"]}")
}

it("should read escaped chars"){
it("should read escaped chars"){ //FIXME is this right?
self.test(tokenizer, testJH: testJH, jsonString: "{\"a\":[\"\"\"]}")
}
}
Expand Down
15 changes: 11 additions & 4 deletions Example/Tests/SingleDocReaderTest.swift
Expand Up @@ -24,18 +24,25 @@ class SigleDocReaderTest: QuickSpec {
let testJH = JsonOutputJsonHandler()

try! JsonReader.readFileAtPath(fileAtPath!, withJsonHandler: testJH)

expect(testJH).notTo(beNil())

let stringFromFile = try! NSString(contentsOfFile: fileAtPath!, encoding: NSUTF8StringEncoding) as String



expect(stringFromFile).to(equal(testJH.json))
}

it("should read the metadata - and cancel after that"){

let metaDataOutput = MetaDataOutputJsonHandler()

try! JsonReader.readFileAtPath(fileAtPath!, withJsonHandler: metaDataOutput)

let metaData = metaDataOutput.getMetaData()

expect(metaData["creationDate"] as? NSNumber) == 1445344592172.305
expect(metaData["profileName"] as? String) == "output"
expect(metaData["version"] as? String) == "1.0.0"
expect(metaData["type"] as? String) == "JsonSingleDocExportTarget"

}
}

Expand Down
2 changes: 1 addition & 1 deletion Example/Tests/version-1.0.0.single-doc.json
@@ -1 +1 @@
{"metaData":{"creationDate":1445344592172.305,"profile\"Name":"output","version":"1.0.0","type":"JsonSingleDocExportTarget"},"userData":{"dateOfBirth":340066800000},"HKQuantityTypeIdentifierDietaryManganese":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierElectrodermalActivity":{"unit":"mcS","data":[]},"HKQuantityTypeIdentifierDietaryMagnesium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietarySelenium":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBodyTemperature":{"unit":"degF","data":[]},"HKQuantityTypeIdentifierDietaryFatSaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryCopper":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryPotassium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminK":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBodyFatPercentage":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryCalcium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryIodine":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryFatMonounsaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryPantothenicAcid":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryThiamin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierStepCount":{"unit":"count","data":[]},"HKQuantityTypeIdentifierPeripheralPerfusionIndex":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryFolate":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryCholesterol":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDistanceWalkingRunning":{"unit":"mi","data":[{"uuid":"F051D929-301C-4073-BB7B-04035EF6DA95","value":1,"edate":1444398720000,"sdate":1444395120000},{"value":1.6,"uuid":"F86B791C-0756-4B7D-A500-74F1492AAA84","sdate":1445097480000}]},"HKQuantityTypeIdentifierBasalEnergyBurned":{"unit":"kcal","data":[]},"HKQuantityTypeIdentifierBodyMassIndex":{"unit":"count","data":[]},"HKQuantityTypeIdentifierHeight":{"unit":"ft","data":[]},"HKQuantityTypeIdentifierDietaryWater":{"unit":"mL","data":[]},"HKQuantityTypeIdentifierHeartRate":{"unit":"count/min","data":[{"value":60,"uuid":"DE34D02C-FD86-4FAD-B1A6-01CDA151A2D2","sdate":1444242420000}]},"HKQuantityTypeIdentifierDietaryVitaminB12":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierPeakExpiratoryFlowRate":{"unit":"L/min","data":[]},"HKQuantityTypeIdentifierBloodGlucose":{"unit":"mg/dL","data":[]},"HKQuantityTypeIdentifierDietarySodium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryEnergyConsumed":{"unit":"kcal","data":[]},"HKQuantityTypeIdentifierDistanceCycling":{"unit":"mi","data":[]},"HKQuantityTypeIdentifierNikeFuel":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryRiboflavin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierBloodAlcoholContent":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryZinc":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietarySugar":{"unit":"g","data":[]},"HKQuantityTypeIdentifierBloodPressureSystolic":{"unit":"mmHg","data":[{"value":90,"uuid":"902253AC-9358-4DCE-96BF-BD69F44B24B1","sdate":1444645440000}]},"HKQuantityTypeIdentifierDietaryBiotin":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBloodPressureDiastolic":{"unit":"mmHg","data":[{"value":130,"uuid":"69D2D315-D441-4F1F-811F-84CCC66F5E34","sdate":1444645440000}]},"HKQuantityTypeIdentifierLeanBodyMass":{"unit":"lb","data":[]},"HKQuantityTypeIdentifierDietaryNiacin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryChromium":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBasalBodyTemperature":{"unit":"degF","data":[]},"HKQuantityTypeIdentifierOxygenSaturation":{"unit":"%","data":[]},"HKQuantityTypeIdentifierRespiratoryRate":{"unit":"count/min","data":[]},"HKQuantityTypeIdentifierDietaryFiber":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryCarbohydrates":{"unit":"g","data":[]},"HKQuantityTypeIdentifierInhalerUsage":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryIron":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryMolybdenum":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryProtein":{"unit":"g","data":[]},"HKQuantityTypeIdentifierForcedExpiratoryVolume1":{"unit":"L","data":[]},"HKQuantityTypeIdentifierDietaryPhosphorus":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryFatPolyunsaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierNumberOfTimesFallen":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryVitaminB6":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryFatTotal":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryChloride":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierActiveEnergyBurned":{"unit":"kcal","data":[{"uuid":"94BD9309-5C2F-4A49-8776-B8245BDDD59B","value":1000,"edate":1444398720000,"sdate":1444395120000}]},"HKQuantityTypeIdentifierFlightsClimbed":{"unit":"count","data":[]},"HKQuantityTypeIdentifierForcedVitalCapacity":{"unit":"L","data":[]},"HKQuantityTypeIdentifierBodyMass":{"unit":"kg","data":[{"value":71,"uuid":"92D2E4B9-463F-4DB1-8E44-B46BEC371DCA","sdate":1444407300000},{"value":78,"uuid":"E9AECC54-41B6-4F73-BFF0-5B5499F54128","sdate":1444573020000}]},"HKQuantityTypeIdentifierUVExposure":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryVitaminA":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryCaffeine":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminC":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminD":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminE":{"unit":"mg","data":[]},"HKCategoryTypeIdentifierAppleStandHour":{"data":[]},"HKCategoryTypeIdentifierOvulationTestResult":{"data":[]},"HKCategoryTypeIdentifierSleepAnalysis":{"data":[]},"HKCategoryTypeIdentifierMenstrualFlow":{"data":[]},"HKCategoryTypeIdentifierIntermenstrualBleeding":{"data":[]},"HKCategoryTypeIdentifierCervicalMucusQuality":{"data":[]},"HKCategoryTypeIdentifierSexualActivity":{"data":[]},"HKCorrelationTypeIdentifierFood":{"data":[]},"HKCorrelationTypeIdentifierBloodPressure":{"data":[{"objects":[{"uuid":"902253AC-9358-4DCE-96BF-BD69F44B24B1","type":"HKQuantityTypeIdentifierBloodPressureSystolic"},{"uuid":"69D2D315-D441-4F1F-811F-84CCC66F5E34","type":"HKQuantityTypeIdentifierBloodPressureDiastolic"}],"uuid":"795E68E5-6235-4F7F-8A0D-FE6525AA0A5E","sdate":1444645440000}]},"HKWorkoutTypeIdentifier":{"data":[{"uuid":"CC5C108D-5114-4BC4-99A6-BEC84C8D87EF","sampleType":"HKWorkoutTypeIdentifier","workoutActivityType":37,"totalEnergyBurned":1000,"eDate":1444398720000,"sDate":1444395120000,"duration":3600,"workoutEvents":[],"totalDistance":1609.344}]}}
{"metaData":{"creationDate":1445344592172.305,"profileName":"output","version":"1.0.0","type":"JsonSingleDocExportTarget"},"userData":{"dateOfBirth":340066800000},"HKQuantityTypeIdentifierDietaryManganese":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierElectrodermalActivity":{"unit":"mcS","data":[]},"HKQuantityTypeIdentifierDietaryMagnesium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietarySelenium":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBodyTemperature":{"unit":"degF","data":[]},"HKQuantityTypeIdentifierDietaryFatSaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryCopper":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryPotassium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminK":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBodyFatPercentage":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryCalcium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryIodine":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryFatMonounsaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryPantothenicAcid":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryThiamin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierStepCount":{"unit":"count","data":[]},"HKQuantityTypeIdentifierPeripheralPerfusionIndex":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryFolate":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryCholesterol":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDistanceWalkingRunning":{"unit":"mi","data":[{"uuid":"F051D929-301C-4073-BB7B-04035EF6DA95","value":1,"edate":1444398720000,"sdate":1444395120000},{"value":1.6,"uuid":"F86B791C-0756-4B7D-A500-74F1492AAA84","sdate":1445097480000}]},"HKQuantityTypeIdentifierBasalEnergyBurned":{"unit":"kcal","data":[]},"HKQuantityTypeIdentifierBodyMassIndex":{"unit":"count","data":[]},"HKQuantityTypeIdentifierHeight":{"unit":"ft","data":[]},"HKQuantityTypeIdentifierDietaryWater":{"unit":"mL","data":[]},"HKQuantityTypeIdentifierHeartRate":{"unit":"count/min","data":[{"value":60,"uuid":"DE34D02C-FD86-4FAD-B1A6-01CDA151A2D2","sdate":1444242420000}]},"HKQuantityTypeIdentifierDietaryVitaminB12":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierPeakExpiratoryFlowRate":{"unit":"L/min","data":[]},"HKQuantityTypeIdentifierBloodGlucose":{"unit":"mg/dL","data":[]},"HKQuantityTypeIdentifierDietarySodium":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryEnergyConsumed":{"unit":"kcal","data":[]},"HKQuantityTypeIdentifierDistanceCycling":{"unit":"mi","data":[]},"HKQuantityTypeIdentifierNikeFuel":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryRiboflavin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierBloodAlcoholContent":{"unit":"%","data":[]},"HKQuantityTypeIdentifierDietaryZinc":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietarySugar":{"unit":"g","data":[]},"HKQuantityTypeIdentifierBloodPressureSystolic":{"unit":"mmHg","data":[{"value":90,"uuid":"902253AC-9358-4DCE-96BF-BD69F44B24B1","sdate":1444645440000}]},"HKQuantityTypeIdentifierDietaryBiotin":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBloodPressureDiastolic":{"unit":"mmHg","data":[{"value":130,"uuid":"69D2D315-D441-4F1F-811F-84CCC66F5E34","sdate":1444645440000}]},"HKQuantityTypeIdentifierLeanBodyMass":{"unit":"lb","data":[]},"HKQuantityTypeIdentifierDietaryNiacin":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryChromium":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierBasalBodyTemperature":{"unit":"degF","data":[]},"HKQuantityTypeIdentifierOxygenSaturation":{"unit":"%","data":[]},"HKQuantityTypeIdentifierRespiratoryRate":{"unit":"count/min","data":[]},"HKQuantityTypeIdentifierDietaryFiber":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryCarbohydrates":{"unit":"g","data":[]},"HKQuantityTypeIdentifierInhalerUsage":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryIron":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryMolybdenum":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryProtein":{"unit":"g","data":[]},"HKQuantityTypeIdentifierForcedExpiratoryVolume1":{"unit":"L","data":[]},"HKQuantityTypeIdentifierDietaryPhosphorus":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryFatPolyunsaturated":{"unit":"g","data":[]},"HKQuantityTypeIdentifierNumberOfTimesFallen":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryVitaminB6":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryFatTotal":{"unit":"g","data":[]},"HKQuantityTypeIdentifierDietaryChloride":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierActiveEnergyBurned":{"unit":"kcal","data":[{"uuid":"94BD9309-5C2F-4A49-8776-B8245BDDD59B","value":1000,"edate":1444398720000,"sdate":1444395120000}]},"HKQuantityTypeIdentifierFlightsClimbed":{"unit":"count","data":[]},"HKQuantityTypeIdentifierForcedVitalCapacity":{"unit":"L","data":[]},"HKQuantityTypeIdentifierBodyMass":{"unit":"kg","data":[{"value":71,"uuid":"92D2E4B9-463F-4DB1-8E44-B46BEC371DCA","sdate":1444407300000},{"value":78,"uuid":"E9AECC54-41B6-4F73-BFF0-5B5499F54128","sdate":1444573020000}]},"HKQuantityTypeIdentifierUVExposure":{"unit":"count","data":[]},"HKQuantityTypeIdentifierDietaryVitaminA":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryCaffeine":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminC":{"unit":"mg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminD":{"unit":"mcg","data":[]},"HKQuantityTypeIdentifierDietaryVitaminE":{"unit":"mg","data":[]},"HKCategoryTypeIdentifierAppleStandHour":{"data":[]},"HKCategoryTypeIdentifierOvulationTestResult":{"data":[]},"HKCategoryTypeIdentifierSleepAnalysis":{"data":[]},"HKCategoryTypeIdentifierMenstrualFlow":{"data":[]},"HKCategoryTypeIdentifierIntermenstrualBleeding":{"data":[]},"HKCategoryTypeIdentifierCervicalMucusQuality":{"data":[]},"HKCategoryTypeIdentifierSexualActivity":{"data":[]},"HKCorrelationTypeIdentifierFood":{"data":[]},"HKCorrelationTypeIdentifierBloodPressure":{"data":[{"objects":[{"uuid":"902253AC-9358-4DCE-96BF-BD69F44B24B1","type":"HKQuantityTypeIdentifierBloodPressureSystolic"},{"uuid":"69D2D315-D441-4F1F-811F-84CCC66F5E34","type":"HKQuantityTypeIdentifierBloodPressureDiastolic"}],"uuid":"795E68E5-6235-4F7F-8A0D-FE6525AA0A5E","sdate":1444645440000}]},"HKWorkoutTypeIdentifier":{"data":[{"uuid":"CC5C108D-5114-4BC4-99A6-BEC84C8D87EF","sampleType":"HKWorkoutTypeIdentifier","workoutActivityType":37,"totalEnergyBurned":1000,"eDate":1444398720000,"sDate":1444395120000,"duration":3600,"workoutEvents":[],"totalDistance":1609.344}]}}
49 changes: 49 additions & 0 deletions Pod/Classes/Import.swift
@@ -0,0 +1,49 @@
//
// Import.swift
// Pods
//
// Created by Michael Seemann on 22.10.15.
//
//

import Foundation

// {"metaData":{"creationDate":1445344592172.305,"profileName":"out\"put","version":"1.0.0","type":"JsonSingleDocExportTarget"},
class MetaDataOutputJsonHandler: AbstractJsonHandler {

var name:String?
var collectProperties = false
var metaDataDict:Dictionary<String,AnyObject> = [:]

func getMetaData() -> Dictionary<String,AnyObject> {
return metaDataDict
}

override func name(name: String) {
self.name = name
}

override func startObject() {
collectProperties = name == "metaData"
}

override func endObject() {
if collectProperties {
// FIXME cancel handler - all done
print(metaDataDict)
collectProperties = false
}
}

override func stringValue(value: String){
if collectProperties {
print(value)
metaDataDict[name!] = value
}
}
override func numberValue(value: NSNumber){
if collectProperties {
metaDataDict[name!] = value
}
}
}
14 changes: 14 additions & 0 deletions Pod/Classes/Json.swift
Expand Up @@ -546,6 +546,20 @@ protocol JsonHandlerProtocol {
func nullValue()
}

class AbstractJsonHandler : JsonHandlerProtocol {
func startArray(){}
func endArray(){}

func startObject(){}
func endObject(){}

func name(name: String){}
func stringValue(value: String){}
func boolValue(value: Bool){}
func numberValue(value: NSNumber){}
func nullValue(){}
}

class JsonOutputJsonHandler: JsonHandlerProtocol {

let memOutputStream : MemOutputStream!
Expand Down

0 comments on commit b069b99

Please sign in to comment.