Copy/paste fine for this particular instance but if we start seeing every other iOS plugin do a similar thing, I think that translates into something that should be considered as the "core" iOS implementation providing, no?
On 6/28/13 1:42 PM, "Andrew Grieve" <[email protected]> wrote: >Yeah, I think the need for shared code between plugins is going to come up >a lot. I think it's important to keep Cordova core as leen as possible >though, since that's the API that we promise to provide longer term. >Probably it's fine in this case to just copy & paste the functions into >each plugin. wdyt? Another option is to create a third plugin for the >shared code, but that seems like overkill for such a small amount of code >to me. > > >On Fri, Jun 28, 2013 at 12:04 PM, Steven Gill ><[email protected]>wrote: > >> Hey Andrew, >> >> I have no issue with renaming CDVShared. >> >> CDVLocation got split into two plugins, CDVLocation and CDVCompass. >>Those >> methods were shared between the two, so I split them up and put them in >> CDVShared. Without doing this, you couldn't install both plugins in one >> project. >> >> https://issues.apache.org/jira/browse/CB-3511 >> >> >> >> On Fri, Jun 28, 2013 at 8:17 AM, Andrew Grieve <[email protected]> >> wrote: >> >> > Hey Steve, >> > >> > Just noticed your CDVShared.h commit. For iOS, we have to be really >> careful >> > about namespacing since Obj-C has no namespaces. The category name >>should >> > being with "CDV". So, instead of JSONMethods, it should be >> > "CDVJSONMethods", or maybe: "CDVExtensions". >> > >> > Since categories are a bit of a murky area, it's also important that >>each >> > category on a class go in a file names after the class it's modifying. >> > These methods should go in: >> > >> > NSError+CDVExtensions.h >> > CLLocation+CDVExtensions.h >> > >> > Just did a grep, and don't actually see these new methods used >> anywhere... >> > There is a copy of them in CDVLocation.m, but that's it. Maybe we can >> just >> > delete them? >> > >> > >> > On Tue, Jun 25, 2013 at 8:01 PM, <[email protected]> wrote: >> > >> > > Updated Branches: >> > > refs/heads/3.0.0 9ca742180 -> f705b31e2 >> > > >> > > >> > > added cdvshared >> > > >> > > >> > > Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo >> > > Commit: >> > http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/f705b31e >> > > Tree: >>http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/f705b31e >> > > Diff: >>http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/f705b31e >> > > >> > > Branch: refs/heads/3.0.0 >> > > Commit: f705b31e27693bf44f7f2231cb438fa7809e7fba >> > > Parents: 9ca7421 >> > > Author: Steven Gill <[email protected]> >> > > Authored: Tue Jun 25 17:01:09 2013 -0700 >> > > Committer: Steven Gill <[email protected]> >> > > Committed: Tue Jun 25 17:01:09 2013 -0700 >> > > >> > > >>---------------------------------------------------------------------- >> > > CordovaLib/Classes/CDVShared.h | 35 ++++++++++++ >> > > CordovaLib/Classes/CDVShared.m | 59 >> > ++++++++++++++++++++ >> > > CordovaLib/CordovaLib.xcodeproj/project.pbxproj | 10 +++- >> > > 3 files changed, 103 insertions(+), 1 deletion(-) >> > > >>---------------------------------------------------------------------- >> > > >> > > >> > > >> > > >> > >> >>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL >>ib/Classes/CDVShared.h >> > > >>---------------------------------------------------------------------- >> > > diff --git a/CordovaLib/Classes/CDVShared.h >> > > b/CordovaLib/Classes/CDVShared.h >> > > new file mode 100644 >> > > index 0000000..0b59a37 >> > > --- /dev/null >> > > +++ b/CordovaLib/Classes/CDVShared.h >> > > @@ -0,0 +1,35 @@ >> > > +/* >> > > + Licensed to the Apache Software Foundation (ASF) under one >> > > + or more contributor license agreements. See the NOTICE file >> > > + distributed with this work for additional information >> > > + regarding copyright ownership. The ASF licenses this file >> > > + to you 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. >> > > + */ >> > > + >> > > +#import <Foundation/Foundation.h> >> > > +#import <CoreLocation/CoreLocation.h> >> > > + >> > > + >> > > +@interface NSError (JSONMethods) >> > > + >> > > +- (NSString*)JSONRepresentation; >> > > + >> > > +@end >> > > + >> > > +@interface CLLocation (JSONMethods) >> > > + >> > > +- (NSString*)JSONRepresentation; >> > > + >> > > +@end >> > > + >> > > >> > > >> > > >> > >> >>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL >>ib/Classes/CDVShared.m >> > > >>---------------------------------------------------------------------- >> > > diff --git a/CordovaLib/Classes/CDVShared.m >> > > b/CordovaLib/Classes/CDVShared.m >> > > new file mode 100644 >> > > index 0000000..8756c17 >> > > --- /dev/null >> > > +++ b/CordovaLib/Classes/CDVShared.m >> > > @@ -0,0 +1,59 @@ >> > > +/* >> > > + Licensed to the Apache Software Foundation (ASF) under one >> > > + or more contributor license agreements. See the NOTICE file >> > > + distributed with this work for additional information >> > > + regarding copyright ownership. The ASF licenses this file >> > > + to you 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. >> > > + */ >> > > + >> > > +#import "CDVShared.h" >> > > + >> > > +#pragma mark - >> > > +#pragma mark CLLocation(JSONMethods) >> > > + >> > > +@implementation CLLocation (JSONMethods) >> > > + >> > > +- (NSString*)JSONRepresentation >> > > +{ >> > > + return [NSString stringWithFormat: >> > > + @"{ timestamp: %.00f, \ >> > > + coords: { latitude: %f, longitude: %f, altitude: %.02f, >> > > heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: >>%.02f >> } >> > \ >> > > + }", >> > > + [self.timestamp timeIntervalSince1970] * 1000.0, >> > > + self.coordinate.latitude, >> > > + self.coordinate.longitude, >> > > + self.altitude, >> > > + self.course, >> > > + self.speed, >> > > + self.horizontalAccuracy, >> > > + self.verticalAccuracy >> > > + ]; >> > > +} >> > > + >> > > +@end >> > > + >> > > +#pragma mark NSError(JSONMethods) >> > > + >> > > +@implementation NSError (JSONMethods) >> > > + >> > > +- (NSString*)JSONRepresentation >> > > +{ >> > > + return [NSString stringWithFormat: >> > > + @"{ code: %d, message: '%@'}", >> > > + self.code, >> > > + [self localizedDescription] >> > > + ]; >> > > +} >> > > + >> > > +@end >> > > \ No newline at end of file >> > > >> > > >> > > >> > >> >>http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/f705b31e/CordovaL >>ib/CordovaLib.xcodeproj/project.pbxproj >> > > >>---------------------------------------------------------------------- >> > > diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj >> > > b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj >> > > index bf92ac3..2d97260 100644 >> > > --- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj >> > > +++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj >> > > @@ -7,6 +7,8 @@ >> > > objects = { >> > > >> > > /* Begin PBXBuildFile section */ >> > > + 1B701028177A61CF00AE11F4 /* CDVShared.h in Headers >>*/ = >> > > {isa = PBXBuildFile; fileRef = 1B701026177A61CF00AE11F4 /* >>CDVShared.h >> > */; >> > > }; >> > > + 1B701029177A61CF00AE11F4 /* CDVShared.m in Sources >>*/ = >> > > {isa = PBXBuildFile; fileRef = 1B701027177A61CF00AE11F4 /* >>CDVShared.m >> > */; >> > > }; >> > > 1F92F4A01314023E0046367C /* CDVPluginResult.h in >> Headers >> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49E1314023E0046367C /* >> > > CDVPluginResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; >> > > 1F92F4A11314023E0046367C /* CDVPluginResult.m in >> Sources >> > > */ = {isa = PBXBuildFile; fileRef = 1F92F49F1314023E0046367C /* >> > > CDVPluginResult.m */; }; >> > > 301F2F2A14F3C9CA003FE9FC /* CDV.h in Headers */ = >>{isa >> = >> > > PBXBuildFile; fileRef = 301F2F2914F3C9CA003FE9FC /* CDV.h */; >>settings >> = >> > > {ATTRIBUTES = (Public, ); }; }; >> > > @@ -57,6 +59,8 @@ >> > > /* End PBXBuildFile section */ >> > > >> > > /* Begin PBXFileReference section */ >> > > + 1B701026177A61CF00AE11F4 /* CDVShared.h */ = {isa = >> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = >>sourcecode.c.h; >> > > name = CDVShared.h; path = Classes/CDVShared.h; sourceTree = >>"<group>"; >> > }; >> > > + 1B701027177A61CF00AE11F4 /* CDVShared.m */ = {isa = >> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = >> > sourcecode.c.objc; >> > > name = CDVShared.m; path = Classes/CDVShared.m; sourceTree = >>"<group>"; >> > }; >> > > 1F92F49E1314023E0046367C /* CDVPluginResult.h */ = >> {isa = >> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = >>sourcecode.c.h; >> > > name = CDVPluginResult.h; path = Classes/CDVPluginResult.h; >>sourceTree >> = >> > > "<group>"; }; >> > > 1F92F49F1314023E0046367C /* CDVPluginResult.m */ = >> {isa = >> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = >> > sourcecode.c.objc; >> > > name = CDVPluginResult.m; path = Classes/CDVPluginResult.m; >>sourceTree >> = >> > > "<group>"; }; >> > > 301F2F2914F3C9CA003FE9FC /* CDV.h */ = {isa = >> > > PBXFileReference; fileEncoding = 4; lastKnownFileType = >>sourcecode.c.h; >> > > name = CDV.h; path = Classes/CDV.h; sourceTree = "<group>"; }; >> > > @@ -207,12 +211,14 @@ >> > > 30C684921407044A004C1A8E /* >> > > CDVURLProtocol.h */, >> > > 30C684931407044A004C1A8E /* >> > > CDVURLProtocol.m */, >> > > 30C6847E1406CB38004C1A8E /* >> > CDVWhitelist.h >> > > */, >> > > + 1B701026177A61CF00AE11F4 /* >>CDVShared.h >> > */, >> > > + 1B701027177A61CF00AE11F4 /* >>CDVShared.m >> > */, >> > > 30C6847F1406CB38004C1A8E /* >> > CDVWhitelist.m >> > > */, >> > > 30E33AF013A7E24B00594D64 /* >>CDVPlugin.h >> > */, >> > > 30E33AF113A7E24B00594D64 /* >>CDVPlugin.m >> > */, >> > > 1F92F49E1314023E0046367C /* >> > > CDVPluginResult.h */, >> > > 1F92F49F1314023E0046367C /* >> > > CDVPluginResult.m */, >> > > - EB80C2AA15DEA63D004D9E7B /* CDVEcho.h */, >> > > + EB80C2AA15DEA63D004D9E7B /* >>CDVEcho.h >> */, >> > > EB80C2AB15DEA63D004D9E7B /* >>CDVEcho.m >> */, >> > > 8887FD341090FBE7009987E8 /* >> > > CDVInvokedUrlCommand.h */, >> > > 8887FD351090FBE7009987E8 /* >> > > CDVInvokedUrlCommand.m */, >> > > @@ -290,6 +296,7 @@ >> > > EBFF4DBD16D3FE2E008F452B /* >> > > CDVWebViewDelegate.h in Headers */, >> > > EB96673B16A8970A00D86CDF /* >> > > CDVUserAgentUtil.h in Headers */, >> > > 7E14B5A81705050A0032169E /* >>CDVTimer.h >> in >> > > Headers */, >> > > + 1B701028177A61CF00AE11F4 /* >>CDVShared.h >> > in >> > > Headers */, >> > > ); >> > > runOnlyForDeploymentPostprocessing = 0; >> > > }; >> > > @@ -368,6 +375,7 @@ >> > > EB96673C16A8970A00D86CDF /* >> > > CDVUserAgentUtil.m in Sources */, >> > > EBFF4DBC16D3FE2E008F452B /* >> > > CDVWebViewDelegate.m in Sources */, >> > > 7E14B5A91705050A0032169E /* >>CDVTimer.m >> in >> > > Sources */, >> > > + 1B701029177A61CF00AE11F4 /* >>CDVShared.m >> > in >> > > Sources */, >> > > ); >> > > runOnlyForDeploymentPostprocessing = 0; >> > > }; >> > > >> > > >> > >>
